我正在翻译项目的工作。 我遇到的一个问题是当我试图替换单词特殊字符时。如何用Word替换[Word]使用Regex.Replace并且应该只替换整个词
例如:
[Animal] can be furry.
Dog is an [Animal].
我需要Animal
更换[Animal]
。请注意,我只需要替换整个单词。所以结果应该如下:
Animal can be furry.
Dog is an Animal.
另外,正如我所说的,它应该是整个单词。所以,如果我有:
[Animal][Animal][Animal] can be furry.
- 结果应该还是
[Animal][Animal][Animal] can be furry.
- 什么都没有发生如[Animal]
是不一样的[Animal][Animal][Animal]
样品:
string originalText1 = "[Animal] can be furry";
string badText ="[Animal]";
string goodText = "Animal";
Regex.Replace(originalText1, Regex.Escape(badText), Regex.Escape(goodText));
一切正常。但正如我所说,我需要整个词被替换。并且用上面的代码,“[Animal]can be furry
”将被替换为“Animalcan be furry
”,这是一个否定的。
所以我也试过:
Regex.Unescape(
Regex.Replace(
Regex.Escape(originalText1),
String.Format(@"\b{0}\b", Regex.Escape(badText)),
Regex.Escape(goodText)))
仍然不会工作,虽然。现在我迷路了。请帮忙。
我还想提一下,有一个几乎类似的帖子,但是这个问题并不需要只替换整个单词。我已经在网上查了近3个小时无济于事。对你的帮助表示感谢。谢谢!
让我善意地'广告'[.Net RegExp CheatSheet](http://www.mikesdotnetting.com/Article/46/CSharp-Regular-Expressions-Cheat-Sheet)它是非常有用的链接有手边:) – quetzalcoatl
这不符合问题中给出的任何示例,因为'['和']'*不包含单词边界。这将匹配例如'A [动物] A'而不是'[动物]'。 – verdesmarald
谢谢你们。是的,这工作。但尽我所能,我不想使用\ [,如果是其他转义字符会发生什么?这就是我使用Regex.Escape的原因。 – IPPO20jr