它可以使用正则表达式.最棘手的部分是正确地逃避特殊字符而不进入反斜杠地狱:
s = Regex.Replace(s, @"[+\-&|!(){}[\]^""~*?:\\]", "\\$0");
Run Code Online (Sandbox Code Playgroud)
Eric J.提到的StringBuilder解决方案简单而优雅.这是编码它的一种方法:
StringBuilder sb = new StringBuilder();
foreach (char c in s)
{
if ("+-&|!(){}[]^\"~*?:\\".Contains(c))
{
sb.Append('\\');
}
sb.Append(c);
}
s = sb.ToString();
Run Code Online (Sandbox Code Playgroud)