1

問題が発生しました: 特定の文字列を含む行を見つけたいのですが、ファイルまたはすべての行の文字列を置き換える方法しか知りません。コマンド "string.Contains" は知っていますが、正しく動作していないようです。私がそれを使用するとき:「if(data.contains(string))」を使用しようとしましたが、それでもすべての行がその文字列に変更されます。ここに私のコードがあります:

private void button1_Click(object sender, EventArgs e)
{
    string replaceText = "peter";
    string withText = "Gilbert";
    using (System.IO.StreamReader streamReader = new System.IO.StreamReader(@"C:\Users\G\Documents\test.txt"))
    {
        using (System.IO.StreamWriter streamWriter = new System.IO.StreamWriter(@"C:\Users\G\Documents\test.txt" + ".tmp"))
        {

            while (!streamReader.EndOfStream)
            {
                string data = streamReader.ReadLine();
                data = data.Replace(replaceText, withText);
                streamWriter.WriteLine(data);
            }
        }

    }
    using (System.IO.StreamReader streamReader = new System.IO.StreamReader(@"C:\Users\G\Documents\test.txt" + ".tmp"))
    {
        using (System.IO.StreamWriter streamWriter = new System.IO.StreamWriter(@"C:\Users\G\Documents\test.txt"))
        {

            while (!streamReader.EndOfStream)
            {
                string data = streamReader.ReadLine();
                data = data.Replace(replaceText, withText);
                streamWriter.WriteLine(data);
            }

        }
    }

}

}

4

1 に答える 1

1

これを試して:

FileStream stream = File.Open("file", FileMode.Open);
StreamReader rdr = new StreamReader(rdr);
String[] flines = rdr.ReadToEnd().Split(new String[]{"\r\n"}, StringSplitOptions.None);
rdr.Close();
stream = File.Create("file");
StreamWriter wtr = new StreamWriter(stream);
foreach(String str in flines)
{
    wtr.WriteLine(str.Replace(replaceTxt, newText));
}
wtr.Close();

もちろん、任意の基準に基づいて記述された文字列を変更または変更しないロジックをループに入れることもできます。

于 2012-10-26T15:40:25.810 に答える