正则表达式或一个代码来操纵字符串

我正在尝试执行以下操作:

代码前的字符串:

"don\'t" "a\\b" 

代码后的字符串:

 "\"don\\\'t\"" "\"a\\\\b\"" 

我编写了完美的代码:

 string x = ""; x += "\""; foreach (var item in s) { if (item == '\'' || item == '\"' || item == '\\') { x += '\\'; } x += item; } x += "\""; return x; 

但是有更好的方法吗? 一个class轮代码? 我不熟悉C#正则表达式,但我认为这可以通过它来实现。 谢谢你的帮助…

我还有两种更好的方法:

  1. 使用StringBuilder 。 这避免了多个中间string分配:

     var sb = new StringBuilder("\""); foreach (var item in s) { if (item == '\'' || item == '\"' || item == '\\') sb.Append('\\'); sb.Append(item); } sb.Append('"'); return sb.ToString(); 
  2. 如你所说,使用正则表达式替换:

     return "\"" + Regex.Replace(s, @"[\\'""]", "\\$&") + "\""; 

    正则表达式是[\\'"] ,这意味着匹配任何这些字符: \'" ,替换字符串是\$& ,这意味着: 用反斜杠替换它,后跟你刚才匹配的字符

    编译器将两个字符串连接重写为一个String.Concat调用。