22

我有以下String字符。

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

当我打印上述序列时,我得到:

\u0625\u0647\u062

我怎样才能得到真正的可打印 Unicode 字符而不是这个 \uxxxx 表示?

4

5 回答 5

5

如果你真的不控制字符串,那么你需要用它们的值替换那些转义序列:

Regex.Replace(s, @"\u([0-9A-Fa-f]{4})", m => ((char)Convert.ToInt32(m.Groups[1].Value, 16)).ToString());

并希望你那里也没有\\逃脱。

于 2012-07-28T12:05:54.203 回答
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();
于 2012-07-28T12:04:21.813 回答
1

Asker 将其发布为对他们问题的回答:

我找到了答案:

s = System.Text.RegularExpressions.Regex.Unescape(s);
于 2021-11-30T19:43:05.113 回答
-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"
于 2020-12-04T07:43:08.070 回答
-2

我建议使用String.Normalize. 你可以在这里找到一切:

http://msdn.microsoft.com/it-it/library/8eaxk1x2.aspx

于 2012-07-28T12:11:54.843 回答