在 C# 中将转义的 unicode 更改为字符串
本文关键字:字符串 unicode 转义 | 更新日期: 2023-09-27 18:32:06
在 c# 中我有
string x = @"'u0044'u0068'uD83D'uDE07'u90FD'u5728"
我需要把它变成:
Dh 都在
我该怎么做?具体来说,我如何知道 ''uD83D''uDE07 何时是一个字符而不是两个字符?
您可能必须将每个字符表示形式解析为int
,然后转换为char
:
string x = @"'u0044'u0068'uD83D'uDE07'u90FD'u5728";
var chars = x.Split(new[]{@"'u"}, StringSplitOptions.RemoveEmptyEntries)
.Select(c => (char)Convert.ToInt32(c, 16))
.ToArray();
var output = new string(chars);
// output = Dh 都在
我知道Newtonsoft json.net 会转换,所以我会使用它,如果这是我的一个项目,并且我已经引用了它:
using Newtonsoft.Json;
var output = new JsonTextReader(new StringReader($"'"{x}'"")).ReadAsString();
//output = Dh 都在
优点是它也可以处理非Unicode字符,即 "Z'u0044" -> "ZD"
.缺点是,在当前状态下,它无法处理非Unicode字符,例如引号:"A'"B"
将失败。