0

これはコードです:

if (@"d:\Keywords.txt".Contains(line))
{
}
else
{
    w.WriteLine(line);
}

Keywords.txt に次の行があることをメモ帳で確認します。

ダニエル

行は現在ダニエルですが、それでも w.WriteLine(line); を実行しています。

何故ですか ?

4

7 に答える 7

3

"d:\Keywords.txt"lineは文字列なので、 が文字列に含まれているかどうかを確認して"d:\Keywords.txt"います (そうではないため、 に移動しelseます)。ファイルの内容をロードしたい場合は、 (eg) を使用できますFile.ReadAllLines:

var lines = File.ReadAllLines("d:\Keywords.txt"); 
if(lines.Contains(line))  
{
    // do something 
}

Fileクラス メソッドの完全なリストを利用できます@MSDN ファイル クラス

于 2012-10-11T15:33:53.140 に答える
1

文字列「d:\Keywords.txt」には Daniel 行が含まれていないため

于 2012-10-11T15:33:36.263 に答える
1

ファイルをロードしていないため、文字列d:\Keywords.txtをチェックしていますDaniel

ファイルを読み込んで内容を確認するには、試してください

string fileContents = System.IO.File.ReadAllText(@"d:\Keywords.txt");
if(fileContents.Contains(line))
{
    //Desired code here
}
else
{
    w.WriteLine(line);
}
于 2012-10-11T15:33:36.510 に答える
1
if (File.ReadAllLines(@"d:\Keywords.txt").Any(x => x.Contains(line));

必要なものを取得するか、文字列を正確に一致させます

File.ReadAllLines(@"d:\Keywords.txt").Any(x => x.Equals(line));
于 2012-10-11T15:35:58.450 に答える
0

d:\Keywords.txt文字列に値が含まれているかどうかを確認していますDaniel。ファイルを開いてその内容を見ているわけではありません。そうではないので、elseステートメントに到達しています。

ファイルからテキストを読み取る方法については、MSDN のドキュメントを参照してください。

于 2012-10-11T15:34:24.363 に答える
0

ここでの Contains 呼び出しは、実際の文字列 @"d:\Keywords.txt" に、keywords.txt の内容ではなく、検索文字列が含まれているかどうかを確認しています。

次のようなものを試してください:

        using (var sr = new StreamReader(@"d:\Keywords.txt"))
        {
            if (sr.ReadToEnd().ToString().Contains(line) == false)
            {
                w.WriteLine(line);
            }
        }
于 2012-10-11T15:35:11.700 に答える
0

最初にファイルから行を読み取る必要があります

    string[] lines = File.ReadAllLines(@"d:\Keywords.txt");

    foreach (string line in lines)
    {
               // check for your "line" here
    }
于 2012-10-11T15:36:00.523 に答える