0

置換テキストに置き換える必要がある既存のテキストがいくつかあります。使用する置換テキストは、既存のテキストによって異なります。私の問題を示す簡単な変換表を次に示します。

    ,'A', ==> ,'フレッド',
    ,'B', ==> ,'メアリー',
    ... 等々...

元のテキストに一致させるのは簡単です。私が問題を抱えている部分は、置換テキストです。ご覧のとおり、置換テキストは一致したテキストによって異なり,'A',ます,'Fred',。基本的には、変換テーブル機構が必要なようです。

.NET RegEx クラスを使用しています。

一致をキャプチャして置換テキストで再利用することは理解していますが、それでうまくいくとは思いません。何か提案はありますか?

4

2 に答える 2

1

.NET を使用しているため、次の 2 つの方法があります。

  1. 複数の交換:

    string.Replace("A", "Fred");
    string.Replace("B", "Mary");
    // ... (could use regex based replacement if necessary)
    
  2. 置換文字列の代わりにMatchEvaluatorデリゲートを渡します。Regex.Replace

    Regex.Replace(input, matchRegexString, match => {
      // Code that takes a System.Text.RegularExpressions.Match and returns a string
    });
    

    デリゲートのリターンが置換テキストとして使用されます。(インスタンスを作成する非静的バージョンもあります。)過去に、辞書にループされている入力にRegex基づいて置換を実行するためにこれを行いました。%key%

于 2012-10-22T16:19:08.573 に答える
0

複数の置換やデリゲート/サブルーチンなしでこれを行う唯一の方法は、サブジェクト文字列の「後で」置換文字列が既に存在する場合にのみ機能すると思います。

これを置き換えます:

,'A',(?=.*(Fred))|,'B',(?=.*(Mary))

これとともに:

,'$1$2',

はい、かなりばかげたトリックです。@Richardに投票して、愚かさをお詫びします。

于 2012-10-22T17:22:35.203 に答える