私は以下String
のキャラクターを持っています。
string s = "\\u0625\\u0647\\u0644";
上記のシーケンスを印刷すると、次のようになります。
\u0625\u0647\u062
この \uxxxx 表現の代わりに、実際の印刷可能な Unicode 文字を取得するにはどうすればよいですか?
本当に文字列を制御しない場合は、これらのエスケープ シーケンスをその値に置き換える必要があります。
Regex.Replace(s, @"\u([0-9A-Fa-f]{4})", m => ((char)Convert.ToInt32(m.Groups[1].Value, 16)).ToString());
そこにも逃げ場がないことを願っています\\
。
試してください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();
Asker は、質問への回答としてこれを投稿しました。
私は答えを見つけました:
s = System.Text.RegularExpressions.Regex.Unescape(s);
の使用をお勧めしますString.Normalize
。ここですべてを見つけることができます: