如何判断字符串数组中非空字符串的数量

时间:2014-06-19 13:33:55

标签: c# arrays string

我有一个以管道分隔的字符串:

string line = "test|||tester||test||||||test test|"

我正在读这个介绍一个字符串数组:

string[] wordsArr = line.Split(new string[] { "|" }, StringSplitOptions.None);

如果框架内置了一种方法来查看数组中有多少项不为空,我的目标是无需手动编写循环。另外,我无法在RemoveEmptyEntries b / c上使用StringSplitOptions属性,其中项目属于管道内容。

有什么想法吗?

4 个答案:

答案 0 :(得分:7)

如果您要查找的只是计数,请在拆分后使用.Count

string line = "test|||tester||test||||||test test|";

int notEmptyCount = line
    .Split('|')
    .Count(x => !string.IsNullOrEmpty(x));

如果您要过滤掉空的项目并访问剩余的所有项目,请改用.Where

var notEmptyCollection = line
    .Split('|')
    .Where(x => !string.IsNullOrEmpty(x));

答案 1 :(得分:0)

试试这个:

string line = "test|||tester||test||||||test test|";
string[] wordsArr = line.Split(new string[] { "|" }, StringSplitOptions.None);
var notEmpty = wordsArr.Count(x => !String.IsNullOrEmpty(x));

答案 2 :(得分:0)

这有效:

int wordCount = line.Split(new string[] { "|" }, StringSplitOptions.RemoveEmptyEntries).Length;
string[] wordsArr = line.Split(new string[] { "|" }, StringSplitOptions.None);

答案 3 :(得分:0)

找到最简单的方法,如下所示

string line = "test|||tester||test||||||test test|";
int notEmptyCount = line.Split(new string[] { "|" }, StringSplitOptions.RemoveEmptyEntries).Length;

在此StringSplitOptions.RemoveEmptyEntries标志参数中,在分割时省略空值。

供进一步参考check here (MSDN)