你将如何从数组中删除空白条目

时间:2011-01-25 21:00:49

标签: c#

如何从数组中删除空白项?

迭代并将非空白项目分配给新数组?

String test = "John, Jane";

//Without using the test.Replace(" ", "");

String[] toList = test.Split(',', ' ', ';');

7 个答案:

答案 0 :(得分:26)

使用string.Split的重载StringSplitOptions

String[] toList = test.Split(new []{',', ' ', ';'}, StringSplitOptions.RemoveEmptyEntries);

答案 1 :(得分:5)

您可以使用the overload of string.Split which allows the suppression of empty items

String test = "John, Jane";
String[] toList = test.Split(new char[] { ',', ' ', ';' }, 
                             StringSplitOptions.RemoveEmptyEntries);

或者甚至更好,每次都不会创建新数组:

 private static readonly char[] Delimiters = { ',', ' ', ';' };
 // Alternatively, if you find it more readable...
 // private static readonly char[] Delimiters = ", ;".ToCharArray();

 ...

 String[] toList = test.Split(Delimiters, StringSplitOptions.RemoveEmptyEntries);

Split不会修改列表,所以应该没问题。

答案 2 :(得分:1)

string[] result = toList.Where(c => c != ' ').ToArray();

答案 3 :(得分:1)

尝试使用一点LINQ:

var n = Array.FindAll(test, str => str.Trim() != string.Empty);

答案 4 :(得分:0)

您可以将它们放在列表中然后调用列表的toArray方法,或者使用LINQ,您可以选择非空白并执行toArray。

答案 5 :(得分:0)

string[] toList = test.Split(',', ' ', ';').Where(v => !string.IsNullOrEmpty(v.Trim())).ToArray();

答案 6 :(得分:0)

如果分隔符后跟一个空格,您只需将其包含在分隔符中:

String[] toList = test.Split(
  new string[] { ", ", "; " },
  StringSplitOptions.None
);

如果分隔符也没有尾随空格,也可以包含这些:

String[] toList = test.Split(
  new string[] { ", ", "; ", ",", ";" },
  StringSplitOptions.None
);

注意:如果字符串包含真正空的项目,则会保留它们。即"Dirk, , Arthur"不会提供与"Dirk, Arthur"相同的结果。