Разделить строку на каждый не-буквенный / числовой символ - PullRequest
1 голос
/ 06 апреля 2020

Представьте строку, содержащую специальные символы, такие как $ § %%,., Цифры и буквы.

Я хочу получить буквы и цифры из произвольной строки в виде массива строк.

Кажется, хорошим решением является использование регулярных выражений, но я не знаю, как это сделать. express [цифры и буквы]

// example
"abc" = {"abc"};
"ab .c" = {"ab", "c"}
"ab123,cd2,  ,,%&$§56" = {"ab123", "cd2", "56"}

// try
string input = "jdahs32455$§&%$§df233§$fd";
string[] output = input.Split(Regex("makejunksfromstring"));

Ответы [ 2 ]

2 голосов
/ 07 апреля 2020

К извлечение фрагментов из 1 или более букв / цифр, которые вы можете использовать

[A-Za-z0-9]+   # ASCII only letters/digits
[\p{L}0-9]+    # Any Unicode letters and ASCII only digits 
[\p{L}\p{N}]+  # Any Unicode letters/digits 

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

C# использование :

string[] output = Regex.Matches(input, @"[\p{L}\p{N}]+").Cast<Match>().Select(x => x.Value).ToArray();
2 голосов
/ 06 апреля 2020

Да, регулярное выражение - действительно хорошее решение для этого.

И фактически, чтобы просто сопоставить все стандартные слова в последовательности ввода, это все, что вам нужно:

(\w+)

Позвольте мне быстро объяснить, что

\ w соответствует любому символу слова и эквивалентно [a-zA-Z0-9_] - при сопоставлении от a до z или от A до Z, от 0 до 9 или _, вы можете захотеть go вместо [a-zA-Z0-9], чтобы избежать подчеркивания.

Заключение выражения в () означает, что вы хотите захватить эту часть как группу.

Значение + означает что вам нужны последовательности из 1 или более предыдущих символов.

Обратитесь к шпаргалке регулярного выражения, чтобы увидеть все возможности, такие как https://cheatography.com/davechild/cheat-sheets/regular-expressions/

Или все, что вы найдете в Интернете.

Также есть инструменты для быстрого тестирования ваших регулярных выражений, такие как https://regex101.com/ (достаточно хорошо визуализированное соответствие) или http://regexstorm.net/tester специально для. NET

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...