Я Java разработчик, но работаю над C# проектом. Что мне нужно сделать, это разделить строку по разделителю, но ограничить ее определенным количеством полей. В Java я могу сделать это:
String message = "xx/xx - xxxxxxxxxxxxxxxxxxx - xxxxxxx";
String[] splitMessage = message.split("\\s-", 3);
В этом случае он разделит его на -
, но я также хочу, чтобы он проверял любой пробел перед параметром da sh и ограничить его 3 полями строки. Проходящая строка разбивается на ___ - ____________ - _________
, где первый пробел является датой (например, 12/31
), второй пробел - сообщение о строке, а третий пробел - местоположение, привязанное к сообщению. Причина, по которой я ограничил его тремя полями, поэтому массив only имеет 3 элемента. Причина, по которой я это делаю, заключается в том, что иногда в сообщении могут быть тире, чтобы оно выглядело так: 12/31 - Test message - test - Test City, 11111
. Поэтому мой код Java, приведенный выше, разделил бы его на следующее:
0: 12/31
1: Test message - test
2: Test City, 11111
Я пытаюсь добиться чего-то похожего в C#, но не уверен, как ограничить это определенным количеством полей. Это мой C# код:
var splitMessage = Regex.Split(Message, " -");
Проблема в том, что без ограничения он разбивает его на 4 или 5 полей, а не только на 3. Например, если это было сообщение: 12/31 - My test - don't use - just a test - Test City, 11111
, он будет возвращать строку [] с 5 индексами:
0: 12/31
1: My test
2: don't use
3: just a test
4: Test City, 11111
Когда я хочу, чтобы он возвращал это:
0: 12/31
1: My test - don't use - just a test
2: Test City, 11111
Прежде чем вы спросите, я не могу изменить входящая строка Я должен разобрать это так же, как я сделал в Java. Так есть ли эквивалент ограничения до 3 полей? Есть ли лучший способ сделать это, кроме использования Regex.Split()
?