0

StreamReader でテキスト ファイルを読み取り、特定の情報を見つけるために Regex.Match を実行しています。それが見つかったら、それを Regex.Replace に置き換え、この置換をファイルに書き戻したいと考えています。

これは私のファイル内のテキストです:

/// 
/// <Command Name="Press_Button"  Comment="Press button" Security="Security1">
/// 
/// <Command Name="Create_Button"  Comment="Create button" Security="Security3">
/// ... lots of other Commands 

Create_ButtonコマンドでSecurity="Security3">を見つけ、Security="Security2">に変更してファイルに書き戻す必要があります

do { 
    // read line by line 
    string ReadLine = InfoStreamReader.ReadLine();

    if (ReadLine.Contains("<Command Name"))
     {
         // now I need to find Security1, replace it with Security2 and write back to the file
     }
   }
while (!InfoStreamReader.EndOfStream);

どんなアイデアでも大歓迎です...

EDITED: tnwからの良い呼び出しは、ファイルを1行ずつ読み書きすることでした。例が必要です。

4

1 に答える 1

3

私はもっ​​とこのようなことをします。そこに記述されているように、ファイル内の行に直接書き込むことはできません。

これは正規表現を使用しませんが、同じことを達成します。

var fileContents = System.IO.File.ReadAllText(@"<File Path>");

fileContents = fileContents.Replace("Security1", "Security2"); 

System.IO.File.WriteAllText(@"<File Path>", fileContents);

ここからほとんど直接引き出されました: c# ファイル内の文字列を置き換えます

または、ループしてファイルを 1 行ずつ読み取り、1 行ずつ新しいファイルに書き込むこともできます。各行について、 をチェックしてSecurity1置換し、新しいファイル書き込むことができます。

例えば:

StringBuilder newFile = new StringBuilder();

string temp = "";

string[] file = File.ReadAllLines(@"<File Path>");

foreach (string line in file)
{
    if (line.Contains("Security1"))
    {

    temp = line.Replace("Security1", "Security2");

    newFile.Append(temp + "\r\n");

    continue;

    }

newFile.Append(line + "\r\n");

}

File.WriteAllText(@"<File Path>", newFile.ToString());

出典: c# を使用してテキスト ファイルから行を編集する方法

于 2013-04-19T18:01:08.133 に答える