C#分割字符串并删除空字符串

38

我想在分割操作中去除空字符串和null值:

我希望在拆分操作中移除空字符串和null值:

 string number = "9811456789,   ";
 List<string> mobileNos = number.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries).Select(mobile => mobile.Trim()).ToList();
我尝试过这个方法,但它没有移除空格条目。

我尝试过这个方法,但它没有移除空格条目。


在选择之前,使用 .Where(x => !x.IsNullOrEmpty()).Select( ...) 清理列表。 - Anton Sizikov
1
但它不是空的,它有空格..你可以添加一个where子句来删除它们。 - BugFinder
2
@AntonSizikov 应该是 !x.IsNullOrWhiteSpace() - Zohar Peled
是的,应该的。 - Anton Sizikov
7个回答

75
var mobileNos = number.Replace(" ", "")
.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries).ToList();

14

据我理解,它能够帮助到您;

string number = "9811456789, ";
List<string> mobileNos = number.Split(',').Where(x => !string.IsNullOrWhiteSpace(x)).ToList();

结果是列表中仅有一个元素,即 [0] = "9811456789"。

希望对你有所帮助。


6
一个字符串扩展可以以如下简洁的方式实现此功能: 扩展:
        public static IEnumerable<string> SplitAndTrim(this string value, params char[] separators)
        {
            Ensure.Argument.NotNull(value, "source");
            return value.Trim().Split(separators, StringSplitOptions.RemoveEmptyEntries).Select(s => s.Trim());
        }

然后您可以按以下方式将其与任何字符串一起使用。
 char[] separator = { ' ', '-' };
 var mobileNos = number.SplitAndTrim(separator);

5
最简单和最好的解决方案是同时使用StringSplitOptions.TrimEntries来修剪结果并使用StringSplitOptions.RemoveEmptyEntries来删除空条目,通过管道运算符(|)提供。
string number = "9811456789,   ";
List<string> mobileNos = number
    .Split(',', StringSplitOptions.TrimEntries | StringSplitOptions.RemoveEmptyEntries)
    .ToList();

请查看以下测试结果,以比较每个选项的效果:

在这里输入图片描述


请注意,StringSplitOptions.TrimEntries 仅在 .NET 5+ 中可用。 - Christo Carstens

5

我知道这是一个老问题,但以下内容完全可行:

string number = "9811456789,   ";
List<string> mobileNos = number.Split(new char[] { ',', ' ' }, StringSplitOptions.RemoveEmptyEntries).ToList();

无需扩展方法或其他任何东西。

3
"string,,,,string2".Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);

返回["字符串1"],["字符串2"]


1
请提供一些解释,为什么您认为您提出的解决方案可能会帮助OP。 - Peter Csala
@PeterCsala这个答案是错误的,但解释了和其他答案差不多的内容,因为代码本身就可以说明问题。 - Michael Schnerring

1
如果你正在使用Linq,这对我来说是有效的。
string temp = "a,b,   ,c,  ";    
List<string> result = temp.Split(',').Where(i => string.IsNullOrWhiteSpace(i) == false).ToList();

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接