Подтвердить что ты не робот

Строка символов Unicode

У меня есть следующие String символов.

string s = "\\u0625\\u0647\\u0644";

Когда я печатаю приведенную выше последовательность, я получаю:

\u0625\u0647\u062

Как я могу получить реальные печатные символы Unicode вместо этого представления \uxxxx?


Я нашел ответ:

s = System.Text.RegularExpressions.Regex.Unescape(s);
4b9b3361

Ответ 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();