替换字符串中的unicode转义序列

Pra*_*uja 5 .net c#

我们有一个文本文件,其中包含以下文本

"\u5b89\u5fbd\u5b5f\u5143"
Run Code Online (Sandbox Code Playgroud)

当我们在c#.net中读取文件时,它显示为

"\\u5b89\\u5fbd\\u5b5f\\u5143"
Run Code Online (Sandbox Code Playgroud)

我们的解码器方法是

public string Decoder(string value)
        {
            Encoding enc = new UTF8Encoding();
            byte[] bytes = enc.GetBytes(value);
           return enc.GetString(bytes);
        }
Run Code Online (Sandbox Code Playgroud)

当我传递硬代码值

string Output=Decoder("\u5b89\u5fbd\u5b5f\u5143");
Run Code Online (Sandbox Code Playgroud)

它运作良好但是当我们使用变量值时,它不起作用.

当我们使用从文本文件中获取的字符串

  value=(text file containt)
  string Output=Decoder(value);
Run Code Online (Sandbox Code Playgroud)

它返回错误的输出.

请帮我解决这个问题.

Dar*_*rov 6

您可以使用正则表达式来解析文件:

private static Regex _regex = new Regex(@"\\u(?<Value>[a-zA-Z0-9]{4})", RegexOptions.Compiled);
public string Decoder(string value)
{
    return _regex.Replace(
        value,
        m => ((char)int.Parse(m.Groups["Value"].Value, NumberStyles.HexNumber)).ToString()
    );
}
Run Code Online (Sandbox Code Playgroud)

然后:

string data = Decoder(File.ReadAllText("test.txt"));
Run Code Online (Sandbox Code Playgroud)


Sag*_*gar 6

使用下面的代码,这可以从输入字符串中删除任何escces charcter

Regex.Unescape(value);
Run Code Online (Sandbox Code Playgroud)