2

我正在使用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");
    }

任何帮助都会很棒!

4

5 回答 5

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();
于 2012-06-21T10:11:26.137 回答
1

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

if (!string.IsNullOrEmpty(l))
{
    // your code here
}
于 2012-06-21T10:11:12.190 回答
1

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

string l = sr.ReadLine();
if (string.IsNullOrEmpty(l) || l[0] == '\0'))
   continue;
...
于 2012-06-21T10:22:15.403 回答
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
    }
}
于 2012-06-21T10:31:35.863 回答
0
string l= sr.ReadLine();
if (l == "") {
  MessageBox.Show("Ignoring line");
  continue;
}
于 2012-06-21T10:11:40.193 回答