我有一个以管道分隔的字符串:
string line = "test|||tester||test||||||test test|"
我正在读这个介绍一个字符串数组:
string[] wordsArr = line.Split(new string[] { "|" }, StringSplitOptions.None);
如果框架内置了一种方法来查看数组中有多少项不为空,我的目标是无需手动编写循环。另外,我无法在RemoveEmptyEntries
b / c上使用StringSplitOptions
属性,其中项目属于管道内容。
有什么想法吗?
答案 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)