0

私のプログラムはレジストリキーの値を読み取り、それらの値をインストールパスと組み合わせます。レジストリからインストールパスも読み取りました。

つまりString dllInstpath = installPath + rKey、次のようになります。 C:\Program Files (x86)\NSi\AutoStore Workflow 6\HpOXPdCaptureRes.dll

次に、上記の文字列を使用して、インストールパスからFileVersionInfoのファイル情報を取得し、すべての値をメモ帳に書き込みます。HpOXPdCaptureRes.dll

私の問題は、TRUEdll名のファイル名に「Res」が含まれていないことです。レジストリには、ファイル名に「Res」が含まれるファイル名のみが含まれています。私がする必要があるのは、テキストファイルから読み取り、すべての「Res」を見つけて、メモ帳ファイル内のテキスト行からそれらを削除することです。

したがって、出力は次のようになります。

現在: HpOXPdCaptureRes.dll

新しい: HpOXPdCapture.dll

私はオンラインで読んだことがありますが、これを行うための最良の方法はとを使用することReadAllLinesですWriteAllLines。ただし、検索と置換を実装する方法がわかりません。スペースや無効な文字などを削除する方法の例をたくさん見てきましたが、必要なものの例を見つけることができませんでした。

概要:

  • テキストファイルを読む
  • テキストのすべての行で罰金Resを科し、削除します
  • 現在のテキストファイルを保持します。つまり、ファイルを削除Resして閉じます

どんな助けでも大歓迎です。

ありがとうございました!

4

4 に答える 4

0

File.ReadAllLinesとを使用できますFile.WriteAllLines

例:

すべての行を読み取り、各行に必要な値を置き換えてから、もう一度行を書き込みます

File.WriteAllLines("textFilePath",File.ReadAllLines("textFilePath").Select(line => line.Replace("Res.dll", ".dll")));
于 2013-02-18T23:07:47.000 に答える
0

ファイルを開き、「File.ReadAllLines」を使用してすべての行を読み取ります。次に、を使用Replaceして:を削除しResます

string[] lines = File.ReadAllLines("yourFileName");
var output = lines.Select(x => x.Replace("Res.dll", ".dll")).ToArray();

後でそれらを保存して戻すには、次を使用できますFile.WriteAllLines

File.WriteAllLines("yourFileName", output);
于 2013-02-18T23:07:56.700 に答える
0

ファイルからすべてを読み取り、「res」のすべての出現箇所を置き換えて、ファイルに書き込みます。

        String filename = "fileName";

        StreamReader sr = new StreamReader(filename);
        String content = sr.ReadToEnd();
        sr.Close();

        StreamWriter sw = new StreamWriter(filename);
        sw.Write(content.Replace("res", ""));
        sw.Close();
于 2013-02-18T23:11:12.740 に答える
0

置換する文字列が文字列内で一意であることが保証されている場合(たとえば、文字列の最後にある「res.dll」Replace)、クラスのメソッドを使用Stringして置換を行うことができます。

List<string> lines = File.ReadAllLines(sourceFile);
lines = lines.select(l => l.Replace("res.dll", ".dll").ToList();

または、大文字と小文字の区別が問題になる場合:

lines = lines.Select(l => l.Substring(l.Length - 7).ToLower() == "res.dll" ? l.Substring(0, l.Length - 7) + ".dll" : l).ToList();

より複雑なケースでは、正規表現を使用して、置き換える文字列のセクションを識別する必要がある場合があります。または、文字列intパスとファイル名を分割し、ファイル名を変更して結合し直すこともできます。

于 2013-02-18T23:14:35.393 に答える