我如何在.net中进行Unescape和Reescape字符串?
我需要一个WPF控件上的TextBox,它可以接受像Commit\r\n\r
这样的文本(这是.net字符串"Commit\\r\\n\\r"
)并将其转换回"Commit\r\n\r"
作为.net字符串。 我希望有一个string.Unescape()和string.Escape()方法对,但它似乎不存在。 我是否必须自己写? 或者有更简单的方法吗?
System.Text.RegularExpressions.Regex.Unescape(@"\r\n\t\t\t\t\t\t\t\t\tHello world!")
Regex.Unescape方法文档
汉斯的代码,改进版。
- 使用StringBuilder – 长字符串的真正性能助推器
-
使它成为一种扩展方法
public static class StringUnescape { public static string Unescape(this string txt) { if (string.IsNullOrEmpty(txt)) { return txt; } StringBuilder retval = new StringBuilder(txt.Length); for (int ix = 0; ix < txt.Length; ) { int jx = txt.IndexOf('\\', ix); if (jx < 0 || jx == txt.Length - 1) jx = txt.Length; retval.Append(txt, ix, jx - ix); if (jx >= txt.Length) break; switch (txt[jx + 1]) { case 'n': retval.Append('\n'); break; // Line feed case 'r': retval.Append('\r'); break; // Carriage return case 't': retval.Append('\t'); break; // Tab case '\\': retval.Append('\\'); break; // Don't escape default: // Unrecognized, copy as-is retval.Append('\\').Append(txt[jx + 1]); break; } ix = jx + 2; } return retval.ToString(); } }
以下方法与javascript escape / unescape函数相同:
Microsoft.JScript.GlobalObject.unescape(); Microsoft.JScript.GlobalObject.escape();
- 使用C#删除目录上的只读属性
- 如何在我的一半请求上调试SessionStateModule / REQUEST_AQUIRE_STATE> 100秒?
- AMI Asterisk Manager Interface Originate Action
- entity framework – 一对一 – ReferentialConstraint映射到商店生成的列
- 如何从DateTime获取TimeSpan
- 即使具有管理员权限,Process.kill()在Windows 7 32位中被拒绝
- 如果在C#中的Catch块中发生exception会发生什么。 在这种情况下,调用者结果也是如此
- 在entity framework查询的选择子句中使用函数
- 跨线程操作无效