我有一个字符串变量,基本上是3个字符串,每个字符串相隔一个空格.这3个字符串的长度可能不同.喜欢
string line="XXX YY ZZ";
Run Code Online (Sandbox Code Playgroud)
现在,偶尔会发生我的字符串变量line,由3个字符串组成,其中第一个和第二个字符串由2个空格分隔,而不是1个.
string line="XX YY ZZ";
Run Code Online (Sandbox Code Playgroud)
我想要做的是将3个字符串存储在字符串数组中.喜欢:
string[] x其中x[0]="XXX",x[1]="YY",x[2]="ZZ"
我试图使用Split功能.
string[] allId = line.Split(' ');
Run Code Online (Sandbox Code Playgroud)
它适用于第一种情况,而不适用于第二种情况.有没有任何简洁明了的方法呢?
Ser*_*kiy 11
只需从结果中删除空字符串:
var allId = line.Split(new char[] {' '}, StringSplitOptions.RemoveEmptyEntries);
Run Code Online (Sandbox Code Playgroud)
使用正则表达式拆分.为什么?空间不是代表空间的唯一角色; 还有标签.
通过使用带有\s+模式的正则表达式拆分,即使混合使用制表符和空格,该操作也将消耗所有空间组合,从而允许返回文本.例
var result = Regex.Split("XX YYY ZZZ", @"\s+");
// "XX", "YYY", "ZZZ" returned in array
Run Code Online (Sandbox Code Playgroud)

模式摘要
\s 表示任何非字符,空格或制表符.
+ 在它说之后,我预计至少有一个,但可以找到不止一个.
所以+后面的\s意思是正则表达式处理器将寻找一个或多个空格作为匹配分开.比赛之间的所有内容都将被退回.