我有以下String
个字符。
string s = "\\u0625\\u0647\\u0644";
当我打印上述序列时,我得到:
\u0625\u0647\u062
如何获取真正可打印的Unicode字符而不是此\ uxxxx表示?
我找到了答案:
s = System.Text.RegularExpressions.Regex.Unescape(s);
答案 0 :(得分:4)
如果你真的不控制字符串,那么你需要用它们的值替换这些转义序列:
Regex.Replace(s, @"\u([0-9A-Fa-f]{4})", m => ((char)Convert.ToInt32(m.Groups[1].Value, 16)).ToString());
并希望你也没有\\
逃脱。
答案 1 :(得分:1)
尝试Regex
:
String inputString = "\\u0625\\u0647\\u0644";
var stringBuilder = new StringBuilder();
foreach (Match match in Regex.Matches(inputString, @"\u([\dA-Fa-f]{4})"))
{
stringBuilder.AppendFormat(@"{0}",
(Char)Convert.ToInt32(match.Groups[1].Value));
}
var result = stringBuilder.ToString();
答案 2 :(得分:-1)
我有以下字符串“ \ u0001”,我想获取它的值。
我做了很多尝试,但这对我有用
int val = Convert.ToInt32(Convert.ToChar("\u0001")); // val = 1;
如果您有多个字符,可以使用以下技术
var original ="\u0001\u0002";
var s = "";
for (int i = 0; i < original.Length; i++)
{
s += Convert.ToInt32(Convert.ToChar(original[i]));
}
// s will be "12"
答案 3 :(得分:-2)
我建议使用String.Normalize
。你可以在这里找到所有的东西: