问题描述
最近遇到一个问题,需要用全字匹配的方式替换字符串,例如我指定输入字符串InputStr,需要将其中的一部分字符串替换掉,但发现用正则表达式的时候,如果遇到需要替换的字符串中包含了特殊的转义字符,如+-*/()%等,就会替换失败,例如输入字符串:“大气系统#大气压强(气压高度<90km)%+参数1>0“,如果替换”大气系统#大气压强(气压高度<90km)%“就会失败,有没有什么好的方式可以能识别所有的特殊字符,能够直接把特殊字符也当做普通字符,进行全字匹配?
解决方案
解决方案二:
在你担忧的字符前面加上反斜杠
解决方案三:
关键是根本不知道会有什么样的特殊字符,这些特殊字符是动态随机出现的
解决方案四:
正则库中有个方法专门干这事:Regex.Escape(@"你的正则表达式")
解决方案五:
Regex.Escape(String)通过替换为转义码来转义最小的字符集(、*、+、?、|、{、[、(、)、^、$、.、#和空白)。这将指示正则表达式引擎按原义解释这些字符而不是解释为元字符。
解决方案六:
引用4楼xuzuning的回复:
Regex.Escape(String)通过替换为转义码来转义最小的字符集(、*、+、?、|、{、[、(、)、^、$、.、#和空白)。这将指示正则表达式引擎按原义解释这些字符而不是解释为元字符。
这个我试过了,我发现没办法成功,我刚刚用字符串:InputStr:大气系统#大气压强(气压高度小于20km)%,repStr:大气系统#大气压强(气压高度小于20km)%,替换为par,结果字符串仍然没有变化
解决方案七:
不知道你是怎么写的varInputStr="大气系统#大气压强(气压高度<90km)%+参数1>0";varpattern="大气系统#大气压强(气压高度<90km)%";Console.WriteLine(Regex.Replace(InputStr,pattern,""));Console.WriteLine(Regex.Replace(InputStr,Regex.Escape("+参数1>0"),""));