如何更换每个单词一次

时间:2015-05-17 09:09:55

标签: c# asp.net

例如:“我是。将字符更改为新的

我想将“word”替换为“char”并将“char”替换为“word”

结果:“我是字符。将更改为新字符

对我来说非常重要

非常感谢。

2 个答案:

答案 0 :(得分:3)

您可以使用正则表达式匹配两个单词,以便在同一个调用中替换它们。这样你可以避免多次替换相互干扰的问题:

str = Regex.Replace(str, "(char|word)", m => m.Groups[0].Value == "char" ? "word" : "char");

这很容易扩展到任何数量的替代品,否则会发生冲突。您还可以在正则表达式中添加\b代码,使其仅匹配整个单词(而不是a内的char)。例如:

str = Regex.Replace(str, @"\b(a|char|word|new|my|to)\b", m => {
  string s = m.Groups[0].Value;
  return
    s == "a" ? "new" :
    s == "char" ? "word" :
    s == "word" ? "char" :
    s == "new" ? "a" :
    s == "my" ? "mine" :
    "with";
});

结果:

"I'm new char. change mine word with a char"

答案 1 :(得分:1)

如果你有3个眼镜,第一个和最后一个玻璃杯装满水而另一个玻璃杯是空的,你如何将水从玻璃杯1更换为玻璃杯3?这与你的问题是一样的。

首先将更改为 to_replace (例如),而不是将字符更改为并再次更改< strong> to_replace 到 char