我有一个程序,其中数组使用string.Split(char [] delimiter)获取其数据。 (使用';'作为分隔符。)
但是,有些值为null。即字符串包含没有数据的部分,因此它执行以下操作:
1; 2; ; 3;
这导致我的数组具有空值。
我如何摆脱它们?
答案 0 :(得分:108)
试试这个:
yourString.Split(new string[] {";"}, StringSplitOptions.RemoveEmptyEntries);
答案 1 :(得分:2)
您可以使用Where linq扩展方法仅返回非null或空值。
string someString = "1;2;;3;";
IEnumerable<string> myResults = someString.Split(';').Where<string>(s => !string.IsNullOrEmpty(s));
答案 2 :(得分:2)
public static string[] nullLessArray(string[] src)
{
Array.Sort(src);
Array.Reverse(src);
int index = Array.IndexOf(src, null);
string[] outputArray = new string[index];
for (int counter = 0; counter < index; counter++)
{
outputArray[counter] = src[counter];
}
return outputArray;
}
答案 3 :(得分:0)
在拆分数据之前,您应该用一个分号替换多个相邻的分号。
这将用一个分号替换两个分号:
datastr = datastr.replace(";;",";");
但是,如果你有两个以上的分号,正则表达式会更好。
datastr = Regex.Replace(datastr, "([;][;]+)", ";");
答案 4 :(得分:0)
words = poly[a].Split(charseparators, StringSplitOptions.RemoveEmptyEntries);
foreach (string word in words)
{
richTextBox1.Text += (d + 1)+ " " + word.Trim(',')+ "\r\n";
d++;
}
charseparators是一个空间