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

bfl*_*mi3 18 c# regex split

我正在尝试拆分一个可以用逗号,空格或分号分隔的字符串.它还可以在每个分隔符后包含一个或多个空格.例如

22222,11111,23232 
OR
22222, 11111, 23232 
OR
22222;     11111; 23232
OR
22222 11111 23232 
Run Code Online (Sandbox Code Playgroud)

其中任何一个都会生成一个包含三个值的数组 ["22222","11111","23232"]

到目前为止我有,var values = Regex.Split("22222, 11111, 23232", @"[\\s,;]+")但这产生了一个数组,其中包含第二个和第三个值,包括像这样的空格:

["22222"," 11111"," 23232"]
Run Code Online (Sandbox Code Playgroud)

Céd*_*non 34

你有两种可能性:

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

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

  • @ bflemi3在这种情况下,分隔符非常简单(只有不同​​的字符),String.Split是为了这个特殊目的而创建的:将字符串拆分成多个字符串,这些字符串由定义的字符分隔.我认为在这种情况下使用_String.Split_会比_Regex.Split_更快. (3认同)

JDB*_*JDB 8

您正在@为字符串使用符号,因此将"\"其解释为文字斜杠.所以你的角色类实际上是作为a "\",a "s",a ","或a进行阅读";".删除额外的斜杠,它应该按照需要工作:

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