1

たとえば3行のテキストファイルを取得しました:

Example Text
Some text here
Text

「here」の直後にテキストを追加したいので、次のようになります。

Example Text
Some text hereADDED TEXT
Text

これまでのところ、私のコードは次のようになっています。 hereのコードの一部を使用しましたが、機能していないようです。

List<string> txtLines = new List<string>();

string FilePath = @"C:\test.txt";

foreach (string s in File.ReadAllLines(FilePath))
{
    txtLines.Add(s);
}

txtLines.Insert(txtLines.IndexOf("here"), "ADDED TEXT");

using (File.Create(FilePath) { }

foreach (string str in txtLines)
{
    File.AppendAllText(FilePath, str + Environment.NewLine);
}

私の問題は次 のtxtLines.IndexOf("here")とおり-1ですSystem.ArgumentOutOfRangeException

誰かが私が間違っていることを教えてもらえますか?

4

3 に答える 3

3

すべてのテキストをリストにロードする理由はありますか? ファイルから値を読み取るときに、値を更新するだけです。

        string FilePath = @"C:\test.txt";

        var text = new StringBuilder();

        foreach (string s in File.ReadAllLines(FilePath))
        {
            text.AppendLine(s.Replace("here", "here ADDED TEXT"));
        }

        using (var file = new StreamWriter(File.Create(FilePath)))
        {
            file.Write(text.ToString());
        }
于 2013-10-10T10:35:08.037 に答える
0

これはあなたを助けるはずのコードです。行を置き換えるだけです txtLines.Insert(txtLines.IndexOf("here"), "ADDED TEXT"); 以下で。ここで最初のものを見つけて、ここに追加されたテキストに置き換えます。

int indx=txtLines.FindIndex(str => str.Contains("here"));
txtLines[indx]= txtLines[indx].Replace("here", "hereADDED TEXT");
于 2013-10-10T10:57:14.427 に答える
-2
            string filePath = "test.txt";
            string[] lines = File.ReadAllLines(FilePath);
            for (int i = 0; i < lines.Length; i++)
            {
                lines[i] = lines[i].Replace("here", "here ADDED TEXT");
            }

            File.WriteAllLines(filePath, lines);

それはあなたが望むトリックをします。

于 2013-10-10T10:35:57.010 に答える