Строка символов Unicode
У меня есть следующие String
символов.
string s = "\\u0625\\u0647\\u0644";
Когда я печатаю приведенную выше последовательность, я получаю:
\u0625\u0647\u062
Как я могу получить реальные печатные символы Unicode вместо этого представления \uxxxx?
Я нашел ответ:
s = System.Text.RegularExpressions.Regex.Unescape(s);
Ответы
Ответ 1
Если вы действительно не контролируете строку, вам нужно заменить эти escape-последовательности своими значениями:
Regex.Replace(s, @"\u([0-9A-Fa-f]{4})", m => ((char)Convert.ToInt32(m.Groups[1].Value, 16)).ToString());
и надеемся, что у вас нет \\
экранов.
Ответ 2
Попробуйте 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();
Ответ 3
Я бы предложил использовать String.Normalize
. Здесь вы можете найти все:
http://msdn.microsoft.com/it-it/library/8eaxk1x2.aspx