使用正则表达式替换而不是字符串替换
本文关键字:替换 字符串 正则表达式 | 更新日期: 2023-09-27 18:02:22
我不太了解Regex,所以这个问题看起来很傻。
我用.Split(' ')
把一个string
分成一个string[]
。
目的是检查单词,或替换任何。
我现在遇到的问题是,对于要替换的单词,它必须是完全匹配的,但是用我分割它的方式,可能有一个(
或[
与分割的单词。
formattedText.Replace(">", "> ").Replace("<", " <").Split(' ')
. 现在可以正常工作,但我想合并更多特殊字符,如[;''/:*?'"<>|&']
。
是否有比我替换的方法更快的方法,如Regex?我有一种感觉,我的路线远不是最好的答案。
编辑This is an (example) string
将被替换为This is an ( example ) string
如果您想替换整个单词,可以使用像这样的正则表达式。
string text = "This is an example (example) noexample";
string newText = Regex.Replace(text, @"'bexample'b", "!foo!");
newText
将包含"This an !foo! (!foo!) noexample"
这里的关键是'b
是断行元字符。因此,它将匹配一行的开头或结尾,以及单词字符('w)和非单词字符('w)之间的转换。它与使用'w或'w之间最大的区别是它们不会在行首或行尾匹配。
我想这就是你想要的东西
如果你想要这些-> ;'/:*?"& lt;> |,"符号替换
string input = "(exam;''/:*?'"<>|&'ple)";
Regex reg = new Regex("[;''/:*?'"<>|&']");
string result = reg.Replace(input, delegate(Match m)
{
return " " + m.Value + " ";
});
如果要替换除a-zA-Z0-9_以外的所有字符
string input = "(example)";
Regex reg = new Regex(@"'W");
string result = reg.Replace(input, delegate(Match m)
{
return " " + m.Value + " ";
});