JavaScript转义字符串不会在C#正则表达式中得到取消转义.取消逃脱()

本文关键字:取消 转义 逃脱 字符串 转义字符 JavaScript 正则表达式 | 更新日期: 2023-09-27 18:31:54

我正在将一个转义的字符串从JavaScript发送到c#控制器,现在我希望它在c#中取消转义。

我在c#中使用了regex.Unescape(),但它不起作用。那么,我将如何在c#中摆脱它呢?

JavaScript转义字符串不会在C#正则表达式中得到取消转义.取消逃脱()

使用Uri.UnescapeUnescapeDataString,请参阅此页面

如果您需要Unicode支持,并且无法使用 System.Web 中实现的unescape功能,则可以改用以下 replace 语句:

string str = "%u0442%u043E%u0432%u0430%20%u0435%20text%20%14%u20AC";
//replace Unicode characters
str = Regex.Replace(str, @"%U([0-9A-F]{4})",  match => ((char)int.Parse( match.Groups[1].Value, NumberStyles.HexNumber ) ).ToString(),RegexOptions.IgnoreCase );
//now replace ASCII character
str = Regex.Replace(str, @"%([0-9A-F]{2})",  match => ((char)int.Parse( match.Groups[1].Value, NumberStyles.HexNumber ) ).ToString(),RegexOptions.IgnoreCase );
Console.WriteLine(str);