173

これまでの私のコード

StreamReader reading = File.OpenText("test.txt");
string str;
while ((str = reading.ReadLine())!=null)
{
      if (str.Contains("some text"))
      {
          StreamWriter write = new StreamWriter("test.txt");
      }
}

テキストを見つける方法は知っていますが、ファイル内のテキストを自分のテキストに置き換える方法がわかりません。

4

7 に答える 7

361

すべてのファイルの内容を読み取ります。で置き換えString.Replaceます。コンテンツをファイルに書き戻します。

string text = File.ReadAllText("test.txt");
text = text.Replace("some text", "new value");
File.WriteAllText("test.txt", text);
于 2012-11-22T09:38:00.847 に答える
38

読み込んでいるのと同じファイルに書き込むのは難しいでしょう。簡単な方法の 1 つは、次のようにすることです。

File.WriteAllText("test.txt", File.ReadAllText("test.txt").Replace("some text","some other text"));

あなたはそれをよりよくレイアウトすることができます

string str = File.ReadAllText("test.txt");
str = str.Replace("some text","some other text");
File.WriteAllText("test.txt", str);
于 2012-11-22T09:37:42.797 に答える
34

変更しない場合でも、読み取ったすべての行を出力ファイルに書き込む必要があります。

何かのようなもの:

using (var input = File.OpenText("input.txt"))
using (var output = new StreamWriter("output.txt")) {
  string line;
  while (null != (line = input.ReadLine())) {
     // optionally modify line.
     output.WriteLine(line);
  }
}

この操作をその場で実行する場合、最も簡単な方法は、一時出力ファイルを使用し、最後に入力ファイルを出力に置き換えることです。

File.Delete("input.txt");
File.Move("output.txt", "input.txt");

(ほとんどのエンコーディングが可変幅であるため、常に同じ長さの置換を行うのは難しいため、テキスト ファイルの途中で更新操作を実行しようとするのはかなり困難です。)

編集:元のファイルを置き換える 2 つのファイル操作ではなく、File.Replace("input.txt", "output.txt", null). ( MSDNを参照してください。)

于 2012-11-22T09:42:09.860 に答える
9

テキスト ファイルをメモリにプルしてから、置換を行う必要がある可能性があります。次に、明確に知っている方法を使用してファイルを上書きする必要があります。したがって、最初に次のことを行います。

// Read lines from source file.
string[] arr = File.ReadAllLines(file);

その後、ループして配列内のテキストを置き換えることができます。

var writer = new StreamWriter(GetFileName(baseFolder, prefix, num));
for (int i = 0; i < arr.Length; i++)
{
    string line = arr[i];
    line.Replace("match", "new value");
    writer.WriteLine(line);
}

このメソッドを使用すると、実行できる操作をある程度制御できます。または、単に1行で置換を行うことができます

File.WriteAllText("test.txt", text.Replace("match", "new value"));

これが役立つことを願っています。

于 2012-11-22T09:39:06.320 に答える