2

ターゲット文字列は"A + A_RT + B*A+AA"です。AB置き換えたいですB。しかし、私はまたはにA置き換えたくありません。期待される結果はです。C#でこれを行うにはどうすればよいですか?ありがとう。A_RTB_RTAABB"B + A_RT + A*B+AA"

現在、次のコードを使用していますが、...に置き換えA_RTられます。B_RT

IDictionary<string, string> map = new Dictionary<string, string>()
                                  {
                                      {"A","B"},
                                      {"B","A"},
                                  };

string str = "A + A_RT + B*A+AA";
var regex = new Regex(String.Join("|", map.Keys));
var newStr = regex.Replace(str, m => map[m.Value]);
4

3 に答える 3

2

正規表現をに変更するとvar regex = new Regex(@"\bA\b|\bB\b")、機能します。

于 2012-10-12T03:23:35.887 に答える
0

使用するvar regex = new Regex(String.Format("\\b[{0}]\\b",String.Join("", map.Keys)));

于 2012-10-12T10:14:44.383 に答える
0

私は正規表現パターンが特に得意ではないので、おそらくこれを行うためのより良い方法があります。しかし、パターン

@"([a-zA-Z_]+)"

一致結果としてすべての変数トークンを取得できました。

于 2012-10-12T02:59:12.120 に答える