在空间上拆分字符串变量或在C#中拆分2个空格

时间:2012-10-16 16:12:27

标签: c# string

我有一个字符串变量,基本上是3个字符串,每个字符串相隔一个空格。这3个字符串的长度可能不同。 喜欢

string line="XXX YY ZZ";

现在,偶尔会发生我的字符串变量line,由3个字符串组成,其中第一个和第二个字符串由2个空格分隔,而不是一个。

string line="XX  YY ZZ";

我想要做的是将3个字符串存储在字符串数组中。喜欢:

string[] x其中x[0]="XXX"x[1]="YY"x[2]="ZZ"

我尝试使用Split功能。

string[] allId = line.Split(' ');

它适用于第一种情况,而不适用于第二种情况。有没有任何简洁明了的方法呢?

3 个答案:

答案 0 :(得分:11)

只需从结果中删除空字符串:

var allId = line.Split(new char[] {' '}, StringSplitOptions.RemoveEmptyEntries);

答案 1 :(得分:8)

使用正则表达式拆分。为什么?空间不是代表空间的唯一角色;还有标签。

通过使用带有\s+模式的正则表达式拆分,即使混合使用制表符和空格,该操作也将消耗所有空间组合,从而允许返回文本。实施例

var result = Regex.Split("XX  YYY    ZZZ", @"\s+");

// "XX", "YYY", "ZZZ" returned in array

Linqpad results image capture

模式摘要

\s表示任何非字符,空格或制表符。 +之后,我预计至少有一个,但可以找到不止一个。

因此+之后的\s意味着正则表达式处理器将寻找一个或多个空格作为匹配分割。将返回比赛之间的所有内容。

答案 2 :(得分:2)

您可以使用带有额外参数的split方法。

.split方法记录在案here

第二个参数options的类型为StringSplitOptions,定义为here

此参数的两个可能值为StringSplitOptions.NoneStringSplitOptions.RemoveEmptyEntries

所以,只需:

string[] allId = line.Split(new char[] {' '}, StringSplitOptions.RemoveEmptyEntries);

你想要你想要的!容易。