C# 逗号、空格或分号分隔字符串上的Regex.Split()

C# 逗号、空格或分号分隔字符串上的Regex.Split(),c#,regex,split,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(“22222111112332”,“@”[\\s,

我正在尝试拆分一个可以是逗号、空格或分号分隔的字符串。它还可以在每个定界符后包含一个或多个空格。比如说

22222,11111,23232 
OR
22222, 11111, 23232 
OR
22222;     11111; 23232
OR
22222 11111 23232 
其中任何一个都将生成一个具有三个值的数组
[“22222”、“11111”、“23232”]

到目前为止,我已经有了
var values=Regex.Split(“22222111112332”,“@”[\\s,;]+”)
,但这会生成一个包含第二个和第三个值的数组,包括如下所示的空格:

这对我有用


另外,请检查下面的答案,如果您真正需要的是基于几个字符分隔符拆分字符串-string.split可能是更好的解决方案

您有两种可能性:

在本例中,您希望按特定的分隔符字符分割字符串<代码>字符串。已为此特殊目的创建拆分。此方法将比
Regex.Split
更快

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

您正在为字符串使用
@
符号,因此
“\”
被解释为文字斜杠。因此,您的字符类实际上是作为
“\”
“s”
、“
”;“
读取的。删除多余的斜杠,它应该可以根据需要工作:

var values = Regex.Split("22222, 11111, 23232", @"[\s,;]+")
要逐字解释“我正在尝试拆分一个可以用逗号、空格或分号分隔的字符串。它还可以在每个分隔符后面包含一个或多个空格”,请尝试:

@"[,;]\s*|\s+"
它的属性是连续分隔符(空白除外)不会被视为单个分隔符

但如果希望将所有连续分隔符视为一个分隔符,则不妨执行以下操作:

@"[,;\s]+"

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

尝试以下正则表达式模式:

([^,;\"\}\{\s*.]\d+)
对于示例文本:

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


请解释您的评论
不要使用正则表达式拆分字符串,请使用string.split method
@bflemi3在这种情况下,分隔符非常简单(仅不同的字符),string.split是为这个特殊目的创建的:将字符串拆分为多个由定义的字符分隔的字符串。我认为在这种情况下,使用String.Split将比使用Regex.Split更快。如果没有第一条语句“Don't use Regex”,并且至少包含一个Regex作为替代,那么这将是一个很好的答案。例如,我通过谷歌搜索找到了同一个问题的答案,我现在使用的是JavaScript而不是C#。几年后,但无论如何,
\s
映射到的不仅仅是一个空格字符。它还映射到换行符、
\u000C
、换行符、
\u000A
、回车符、
\u000D
、制表符、
\u0009
、垂直制表符、
\u000B
、省略号或下一行(NEL)字符(…)、
\u0085
、以及任何分隔符“代码>\u1680,<代码>\uu0020<代码>,<代码>\u0020,<代码>\u1680,<代码>\uu20020<代码>,<代码>\u0020<代码>\u0020<代码>\u0020<代码>\u0020\u00220,<代码><代码>\u0080<代码>\u8080,<代码>\u2000.u2000.u2000<代码>\u2000\u2000\u2000.代码>\uu20<代码>\u20.代码>\u20\u20,,,<代码<代码>\uuu20<代码>\uu20<代码>\u20<代码>\u20<代码>\u20<代码>\u20<代码>\u20<代码>\u20\u3000)
([^,;\"\}\{\s*.]\d+)
{"123","456","789"}
1011,1213,1415
16, 17, 181920
212223;        242526;27
28 29 3031