Regex.Split() on comma, space or semi-colon delimitted string
我正在尝试分割一个字符串,该字符串可以用逗号,空格或分号分隔。 每个定界符后面也可以包含一个或多个空格。 例如
1 2 3 4 5 6 7 | 22222,11111,23232 OR 22222, 11111, 23232 OR 22222; 11111; 23232 OR 22222 11111 23232 |
这些中的任何一个都会产生具有三个值
到目前为止,我有
1 | ["22222"," 11111"," 23232"] |
您有两种可能性:
-
Regex.Split -
String.Split
在这种情况下,您想按特定的定界符分隔字符串。为此已创建
1 2 | char[] delimiters = new [] { ',', ';', ' ' }; // List of your delimiters var splittedArray = myString.Split(delimiters, StringSplitOptions.RemoveEmptyEntries); |
您为字符串使用了
1 | var values = Regex.Split("22222, 11111, 23232", @"[\s,;]+") |
1 | Regex.Split("22222, 11111, 23232", @"[ ,;]+") |
这对我有用
还要检查下面的答案,如果您真正需要的只是基于几个字符分隔符分割一个字符串-string.split可能是一个更好的解决方案
要解释"我正在尝试拆分一个字符串,该字符串可以用逗号,空格或分号分隔。它在每个分隔符后也可以包含一个或多个空格",请尝试:
1 | @"[,;]\s*|\s+" |
它具有以下特性:连续定界符(空格除外)将不被视为单个定界符。
但是,如果您希望将所有连续的定界符都视为一个,那么您也可以这样做:
1 | @"[,;\s]+" |
当然,在这种情况下,
尝试以下正则表达式模式:
1 | ([^,;"\}\{\s*.]\d+) |
对于示例文本:
1 2 3 4 5 | {"123","456","789"} 1011,1213,1415 16, 17, 181920 212223; 242526;27 28 29 3031 |
参见演示。