c# - 逃避角色的最佳方式

标签 c# string escaping replace

我需要转义这些字符:+-&|!(){}[]^"~*?:\,方法是在它们前面加上 \\。 做这个的最好方式是什么。我的第一个想法是使用替换,但这会搜索要替换的每个项目的字符串。 我在想一定有一种方法可以用正则表达式来做到这一点,一次就搞定。

最佳答案

可以使用正则表达式。最棘手的部分是正确地转义特殊字符而不进入反斜杠 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/

相关文章:

c# - 如何在 XAML 中显示递归属性

c# - 暂停一个新的 BackGroundWorker 直到上一个完成

java - 将字符串转换为 ASCII 以及将 ASCII 转换为字符串

PowerShell get-childitem 无法处理以 [ 字符开头的文件名,即使有转义字符

php - MySql 由双引号括起来

c# - 注入(inject) 2.1 ActivationException : Error activating string

c# - 一对多的关系总是让我感到空虚

arrays - 是否可以检查字符串是否与数组或字典中的字符串匹配,Swift?

python - 获取 int 或 str 形式的用户输入

shell - Cygwin bash -c 根据命令是否以 c 开头 :/or something else 产生不同的 argc