我需要评估字符串上的转义序列.
为了转义字符串,使用了HttpUtility.JavaScriptStringEncode或类似的东西.
我该如何进行相反的转换?
这是一个例子:
var s = @"otehu""oeuhnoa
oaehu
oatehu
oeu";
var t = HttpUtility.JavaScriptStringEncode(s);
var n = Decode(t);
我需要这样的功能解码,这将使n == s;
解决方法:
我发现此功能发布在另一个论坛上:
public static string JavaScriptStringDecode(string source)
{
// Replace some chars.
var decoded = source.Replace(@"\'", "'")
.Replace(@"\""", @"""")
.Replace(@"\/", "/")
.Replace(@"\\", @"\")
.Replace(@"\t", "\t")
.Replace(@"\n", "\n");
// Replace unicode escaped text.
var rx = new Regex(@"\\[uU]([0-9A-F]{4})");
decoded = rx.Replace(decoded, match => ((char)Int32.Parse(match.Value.Substring(2), NumberStyles.HexNumber))
.ToString(CultureInfo.InvariantCulture));
return decoded;
}
它为我工作