正则表达式或一个代码来操纵字符串
我正在尝试执行以下操作:
代码前的字符串:
"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#正则表达式,但我认为这可以通过它来实现。 谢谢你的帮助…
我还有两种更好的方法:
-
使用
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();
-
如你所说,使用正则表达式替换:
return "\"" + Regex.Replace(s, @"[\\'""]", "\\$&") + "\"";
正则表达式是
[\\'"]
,这意味着匹配任何这些字符:\
或'
或"
,替换字符串是\$&
,这意味着: 用反斜杠替换它,后跟你刚才匹配的字符 。编译器将两个字符串连接重写为一个
String.Concat
调用。