在我们开发网站过程中很多时刻都需要做过滤特殊字符串,这样我们就得进行特殊字符串进行转义。比如下面这个方法
#region 过滤Json非法字符
public static string String2Json(string s)
{
StringBuilder sb = new StringBuilder("");
for (int i = 0; i < s.Length; i++)
{
char c = s[i];
switch (c)
{
case '\\':
sb.Append("\\\\");
break;
case '/':
sb.Append("\\/");
break;
case '\b':
sb.Append("\\b");
break;
case '\f':
sb.Append("\\f");
break;
case '\n':
sb.Append("\\n");
break;
case '\r':
sb.Append("\\r");
break;
case '\t':
sb.Append("\\t");
break;
default:
sb.Append(c);
break;
}
}
return sb.ToString();
}
#endregion
看到这么长的代码你是否有想去压缩它的念头?
其实微软已经帮我想到了,而提供了Regex.Escape()方法。
如果您想进行转义可以调用Regex.Unescape() 方法。
#region 过滤Json非法字符
public static string String2Json(string s)
{
StringBuilder sb = new StringBuilder("");
for (int i = 0; i < s.Length; i++)
{
char c = s[i];
switch (c)
{
case '\\':
sb.Append("\\\\");
break;
case '/':
sb.Append("\\/");
break;
case '\b':
sb.Append("\\b");
break;
case '\f':
sb.Append("\\f");
break;
case '\n':
sb.Append("\\n");
break;
case '\r':
sb.Append("\\r");
break;
case '\t':
sb.Append("\\t");
break;
default:
sb.Append(c);
break;
}
}
return sb.ToString();
}
#endregion
看到这么长的代码你是否有想去压缩它的念头?
其实微软已经帮我想到了,而提供了Regex.Escape()方法。
如果您想进行转义可以调用Regex.Unescape() 方法。
注意 |
---|
Unescape 不能完全反转转义的字符串,因为当字符转义时无法精确推导字符串。 |
-
它将不可打印字符的表示形式替换为字符本身。 例如,它使用 \x07 替换 \a。 它替换的字符表示形式为 \a、\b、\e、\n、\r、\f、\t 和 \v。
如果 Unescape 方法遇到不能转换的其他转义序列,如 \w 或 \s,它将引发 ArgumentException。
参考:http://msdn.microsoft.com/zh-cn/library/system.text.regularexpressions.regex.unescape.aspx