I am a Java developer, but am working on a C# project. What I need to do is split a String by a delimiter, but limit it to a certain number of fields. In Java, I can do this:

```
String message = "xx/xx - xxxxxxxxxxxxxxxxxxx - xxxxxxx";
String[] splitMessage = message.split("\\s-", 3);

```

In this case, it will split it by the `-`, but I want to also have it check for any space before the dash, and limit it to 3 fields of the String. The String coming through is broken down into `___ - ____________ - _________` with the first space being a date (like `12/31`) the second space being a message about the string, and the third space being a location tied to the message. The reason I limit it to 3 fields so the array **only** has 3 elements. The reason I do this is because sometimes the message can have dashes in it to look like this: `12/31 - Test message - test - Test City, 11111`. So my Java code above would split it into this:

```
0: 12/31
1: Test message - test
2: Test City, 11111

```

I am trying to achieve something similar in C#, but am not sure how to limit it to a certain number of fields. This is my C# code:

```
var splitMessage = Regex.Split(Message, " -");

```

The problem is that without a limit, it splits it into 4 or 5 fields, instead of just the 3. For example, if this were the message: `12/31 - My test - don't use - just a test - Test City, 11111`, it would return a string[] with 5 indexes:

```
0: 12/31
1: My test
2: don't use
3: just a test
4: Test City, 11111

```

When I want it to return this: 

```
0: 12/31
1: My test - don't use - just a test
2: Test City, 11111

```

Before you ask, I can't change the incoming String. I have to parse it the same why I did in Java. So is there an equivalent to limiting it to 3 fields? Is there a better way to do it besides using `Regex.Split()`?