目标字符串为"A + A_RT + B*A+AA"
。我想将A
替换为B
,将B
替换为A
。但我不想将A_RT
替换为B_RT
或AA
替换为BB
。预期结果为"B + A_RT + A*B+AA"
。我怎么能在C#中做到这一点?感谢。
目前我使用以下代码,但它会将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]);
答案 0 :(得分:2)
我将正则表达式更改为var regex = new Regex(@"\bA\b|\bB\b")
,然后就可以了。
答案 1 :(得分:0)
我不是特别擅长正则表达式模式,所以可能有更好的方法来做到这一点。但模式
@"([a-zA-Z_]+)"
能够将所有变量标记作为匹配结果获取。
答案 2 :(得分:0)
使用var regex = new Regex(String.Format("\\b[{0}]\\b",String.Join("", map.Keys)));