我们有一个文本文件,其中包含以下文本
"\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)
它返回错误的输出.
请帮我解决这个问题.
您可以使用正则表达式来解析文件:
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)
使用下面的代码,这可以从输入字符串中删除任何escces charcter
Regex.Unescape(value);
Run Code Online (Sandbox Code Playgroud)