C#检测字符串数组中的空字符

时间:2012-06-21 10:07:08

标签: c# arrays streamreader

我正在使用StreamReader从文本文件中读入字符串数组text[]。文本文件中的一行作为"\0"在位置1 - >中读入。阵列中的20个。我将如何检测此空字符并忽略此行。

代码示例:

StreamReader sr = new StreamReader(Convert.ToString(openFileDialog1.FileName));
while (!sr.EndOfStream)
{
    string l= sr.ReadLine();
    string[] parsedLine = l.Split(new char[] { '=' },StringSplitOptions.RemoveEmptyEntries);
    // Not working:
    if (parsedLine.Length == 0)
    {
        MessageBox.Show("Ignoring line");
    }

任何帮助都会很棒!

5 个答案:

答案 0 :(得分:2)

假设你的意思是一个带有ascii代码的字符:0

   if (parsedLine.Length == 0 || parsedLine[0] == '\0')continue;

修改 如果parsedLine是一个字符串,但是对于代码中的解析,上面的代码将起作用:

    string[] parsedLine = l.Split(new char[] { '=' },StringSplitOptions.RemoveEmptyEntries)
                      .Where(s=>s.Length != 1 || s[0] != '\0').ToArray();

答案 1 :(得分:1)

使用内置的String.IsNullOrEmpty()方法:

if (!string.IsNullOrEmpty(l))
{
    // your code here
}

答案 2 :(得分:1)

如果该行包含空字符,则忽略该行。

string l = sr.ReadLine();
if (string.IsNullOrEmpty(l) || l[0] == '\0'))
   continue;
...

答案 3 :(得分:1)

这是一个应该有效的linq解决方案:

StreamReader sr = new StreamReader(Convert.ToString(openFileDialog1.FileName));
while (!sr.EndOfStream)
{
    string l= sr.ReadLine();
    bool nullPresent = l.ToCharArray().Any(x => x.CompareTo('\0') == 0);

    if (nullPresent)
    {
        MessageBox.Show("Ignoring line");
    }
    else
    {
        // do other stuff
    }
}

答案 4 :(得分:0)

string l= sr.ReadLine();
if (l == "") {
  MessageBox.Show("Ignoring line");
  continue;
}