我需要转义这些字符:+-&|!(){}[]^"~*?:\
,方法是在它们前面加上 \\
。
做这个的最好方式是什么。我的第一个想法是使用替换,但这会搜索要替换的每个项目的字符串。
我在想一定有一种方法可以用正则表达式来做到这一点,一次就搞定。
最佳答案
可以使用正则表达式。最棘手的部分是正确地转义特殊字符而不进入反斜杠 hell :
s = Regex.Replace(s, @"[+\-&|!(){}[\]^""~*?:\\]", "\\$0");
StringBuilder
解决方案 mentioned by Eric J.很简单,也很优雅。这是一种编码方式:
StringBuilder sb = new StringBuilder();
foreach (char c in s)
{
if ("+-&|!(){}[]^\"~*?:\\".Contains(c))
{
sb.Append('\\');
}
sb.Append(c);
}
s = sb.ToString();
关于c# - 逃避角色的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7679705/