Regex.Split()以逗号,空格或分号分隔的字符串

时间:2013-02-04 14:40:39

标签: c# 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"]

5 个答案:

答案 0 :(得分:32)

您有两种可能性:

在这种情况下,您希望通过特定的分隔符caracters分割字符串。为此特殊目的创建了String.Split。此方法将比Regex.Split快。

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

答案 1 :(得分:8)

您的字符串使用@符号,因此"\"被解释为文字斜杠。因此,您的角色类实际上是以"\""s"","";"阅读。删除额外的斜杠,它应该按照需要工作:

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

答案 2 :(得分:2)

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

这对我有用

同时检查下面的答案,如果您真正需要的是基于少数char分隔符拆分字符串 - string.split可能是更好的解决方案

答案 3 :(得分:1)

解释“我正在尝试拆分一个可以用逗号,空格或分号分隔的字符串。它也可以在每个分隔符后面包含一个或多个空格”字面意思,试试:

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

这具有连续分隔符(空格除外)将视为单个分隔符的属性。

但是如果你想把所有连续的分隔符都当作一个分隔符,你可以这样做:

@"[,;\s]+"

当然,在这种情况下,string.Split是一个更简单的选择,正如其他人所指出的那样。

答案 4 :(得分:0)

试试这个正则表达式模式:

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

示例文字:

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

See demo

enter image description here