如何从数组中删除空白项?
迭代并将非空白项目分配给新数组?
String test = "John, Jane";
//Without using the test.Replace(" ", "");
String[] toList = test.Split(',', ' ', ';');
答案 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"
相同的结果。