我有以下String
字符。Unicode字符字符串
string s = "\\u0625\\u0647\\u0644";
當我打印上面的順序,我得到:
\u0625\u0647\u062
我怎樣才能得到真正的可打印Unicode字符,而不是該爲\ uXXXX表示?
我已經找到了答案:
s = System.Text.RegularExpressions.Regex.Unescape(s);
我有以下String
字符。Unicode字符字符串
string s = "\\u0625\\u0647\\u0644";
當我打印上面的順序,我得到:
\u0625\u0647\u062
我怎樣才能得到真正的可打印Unicode字符,而不是該爲\ uXXXX表示?
我已經找到了答案:
s = System.Text.RegularExpressions.Regex.Unescape(s);
嘗試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();
如果你真的不控制字符串,那麼你需要替換這些轉義序列的值:
Regex.Replace(s, @"\u([0-9A-Fa-f]{4})", m => ((char)Convert.ToInt32(m.Groups[1].Value, 16)).ToString());
,並希望你也沒有\\
逃跑。
我會建議使用String.Normalize
。你可以找到這裏的一切:
'Normalize'確實實現了Unicode規範化,這是一個完全獨立的概念。 – Joey 2012-07-28 13:01:17
我覺得這個問題有點模糊,你控制的是字符串?如果是這樣,只需刪除其中一個反斜槓,即。 「\ u1234 \ u5678」。如果沒有,你應該考慮使用帶回調方法的正則表達式來解析數字,將其轉換爲字符,然後以字符串的形式返回該字符 – Onkelborg 2012-07-28 12:01:25
「你不能控制字符串」是什麼意思?你的場景是什麼? – 2012-07-28 12:04:37
好吧,我找到了答案:System.Text.RegularExpressions.Regex.Unescape() – 2012-07-28 12:07:06