我正在做一个翻译项目.我遇到的一个问题是当我试图替换单词特殊字符时.
例如:
[Animal] can be furry.
Dog is an [Animal].
Run Code Online (Sandbox Code Playgroud)
我需要更换[Animal]用Animal.请注意,我只需要替换整个单词.所以结果如下:
Animal can be furry.
Dog is an Animal.
Run Code Online (Sandbox Code Playgroud)
而且,正如我所说的,它应该是整个词.所以,如果我有:
[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));
Run Code Online (Sandbox Code Playgroud)
一切都好.但正如我所说,我需要替换整个词.并且使用上面的代码," [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)))
Run Code Online (Sandbox Code Playgroud)
但仍然无法奏效.而现在我迷路了.请帮忙.
我还想提一下几乎有类似的帖子,但这个问题并不需要仅替换整个单词.我在网上看了将近3个小时都无济于事.对你的帮助表示感谢.谢谢!
我正在经历这个问题 C#,Regex.Match整个单词
它说匹配整个单词使用"\ bpattern\b" 这适用于匹配整个单词而没有任何特殊字符,因为它仅用于单词字符!
我需要一个表达式来匹配带有特殊字符的单词.我的代码如下
class Program
{
static void Main(string[] args)
{
string str = Regex.Escape("Hi temp% dkfsfdf hi");
string pattern = Regex.Escape("temp%");
var matches = Regex.Matches(str, "\\b" + pattern + "\\b" , RegexOptions.IgnoreCase);
int count = matches.Count;
}
}
Run Code Online (Sandbox Code Playgroud)
但由于%,它失败了.我们有解决方法吗? 可以有其他特殊字符,如'space','(',')'等