2

StreamReader文字列配列を使用してテキストファイルから読み込んでいますtext[]"\0"テキストファイルの行の1つが、配列の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 l = sr.ReadLine();
if (string.IsNullOrEmpty(l) || l[0] == '\0'))
   continue;
...
于 2012-06-21T10:22:15.403 に答える
1

組み込みString.IsNullOrEmpty()メソッドを使用します。

if (!string.IsNullOrEmpty(l))
{
    // your code here
}
于 2012-06-21T10:11:12.190 に答える
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 に答える