Regex.Split() в строке с запятой, пробелом или точкой с запятой - программирование
Подтвердить что ты не робот

Regex.Split() в строке с запятой, пробелом или точкой с запятой

Я пытаюсь разбить строку, которая может быть запятой, пробелом или точкой с запятой. Он также может содержать пробел или пробелы после каждого делителя. Например

22222,11111,23232 
OR
22222, 11111, 23232 
OR
22222;     11111; 23232
OR
22222 11111 23232 

Любой из них создаст массив с тремя значениями ["22222","11111","23232"]

До сих пор у меня есть var values = Regex.Split("22222, 11111, 23232", @"[\\s,;]+"), но это создает массив со вторым и третьим значениями, включая пространство (-ы) следующим образом:

["22222"," 11111"," 23232"]
4b9b3361

Ответ 1

У вас есть две возможности:

В этом случае вы хотите разделить строку на конкретные символы разделителей. String.Split создан для этого специального назначения. Этот метод будет быстрее, чем Regex.Split.

char[] delimiters = new [] { ',', ';', ' ' };  // List of your delimiters
var splittedArray = myString.Split(delimiters, StringSplitOptions.RemoveEmptyEntries);

Ответ 2

Вы используете символ @ для своей строки, поэтому "\" интерпретируется как буквальная косая черта. Таким образом, ваш класс символов на самом деле читается как "\", "s", a "," или ";". Удалите лишнюю косую черту и она должна работать по желанию:

var values = Regex.Split("22222, 11111, 23232", @"[\s,;]+")

Ответ 3

Regex.Split("22222, 11111, 23232", @"[ ,;]+")

это сработало для меня

Также проверьте ответ ниже, если все, что вам действительно нужно, разделяет строку на основе нескольких разделителей char - string.split, вероятно, является лучшим решением

Ответ 4

Чтобы интерпретировать "Я пытаюсь разбить строку, которая может быть разделена запятой, пробелом или точкой с запятой, она также может содержать пробел или пробелы после каждого разделителя" в буквальном смысле, попробуйте:

@"[,;]\s*|\s+"

Это свойство состоит в том, что последовательные разделители (кроме пробела) не будут рассматриваться как один разделитель.

Но если вы хотите, чтобы все последовательные разделители обрабатывались как один, вы также можете:

@"[,;\s]+"

Конечно, в этом случае string.Split является более простым вариантом, как указывали другие.

Ответ 5

Попробуйте этот шаблон регулярного выражения:

([^,;\"\}\{\s*.]\d+)

Пример текста:

{"123","456","789"}
1011,1213,1415
16, 17, 181920
212223;        242526;27
28 29 3031 

Смотрите демонстрацию.

enter image description here