2

目标字符串是"A + A_RT + B*A+AA". 我想ABB替换A。但我不想替换A_RTtoB_RTAAto BB。预期的结果是"B + A_RT + A*B+AA"。我怎样才能在 C# 中做到这一点?谢谢。

目前我使用以下代码,但它将替换A_RTB_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 回答