1

テキスト ファイルで特定の文字を検索し、その文字があった行全体を置き換えるにはどうすればよいですか?

テキスト ファイルの例を次に示します。

    line1
    example line2
    others
    ......
    ....
    id: "RandomStr"
    more lines
    ...

の行を見つけて"id"置き換える必要があります。編集されたテキスト ファイルは次のようになります。

    line1
    example line2
    others
    ......
    ....
    "The correct line"
    more lines
    ...
4

2 に答える 2

2

まず、次のように、テキスト ファイルの各行を読み取る必要があります。

For Each line As String In System.IO.File.ReadAllLines("PathToYourTextFile.txt")

Next

次に、一致させたい文字列を検索する必要があります。見つかった場合は、次のように置換値に置き換えます。

Dim outputLines As New List(Of String)()
Dim stringToMatch As String = "ValueToMatch"
Dim replacementString As String = "ReplacementValue"

For Each line As String In System.IO.File.ReadAllLines("PathToYourTextFile.txt")
    Dim matchFound As Boolean
    matchFound = line.Contains(stringToMatch)

    If matchFound Then
        ' Replace line with string
        outputLines.Add(replacementString)
    Else
        outputLines.Add(line)
    End If
Next

最後に、次のようにデータをファイルに書き戻します。

System.IO.File.WriteAllLines("PathToYourOutputFile.txt", outputLines.ToArray(), Encoding.UTF8)
于 2013-08-16T04:33:25.850 に答える
1

最初に行を正規表現と照合します。次に、一致が成功した場合、新しい行を出力します。VB.net はわかりませんが、C# の関数は次のようになります。

void replaceLines(string inputFilePath, string outputFilePath, string pattern, string replacement)
{
    Regex regex = new Regex(pattern);

    using (StreamReader reader = new StreamReader(inputFilePath))
    using (StreamWriter writer = new StreamWriter(outputFilePath))
    {
        string line;
        while ((line = reader.ReadLine()) != null)
        {
            if (regex.IsMatch(line))
            {
                writer.Write(replacement);
            }
            else
            {
                writer.Write(line);
            }
        }
    }
}

次に、次のように呼び出します。

replaceLines(@"C:\temp\input.txt", @"c:\temp\output.txt", "id", "The correct line");

お役に立てれば。

于 2013-08-16T04:34:10.453 に答える