私は以下のString
文字を持っています。私は上記のシーケンスを印刷するときユニコード文字列
string s = "\\u0625\\u0647\\u0644";
、私が取得:
\u0625\u0647\u062
は私の代わりにこの\ uXXXXという表現の実際の印刷可能なUnicode文字を取得できますか?
私は答えを発見した:
s = System.Text.RegularExpressions.Regex.Unescape(s);
私は以下のString
文字を持っています。私は上記のシーケンスを印刷するときユニコード文字列
string s = "\\u0625\\u0647\\u0644";
、私が取得:
\u0625\u0647\u062
は私の代わりにこの\ uXXXXという表現の実際の印刷可能なUnicode文字を取得できますか?
私は答えを発見した:
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
:あなたは、ここですべてを見つけることができますか?その場合は、バックスラッシュの1つを削除してください。 "\ u1234 \ u5678"そうでない場合は、コールバックメソッドを使って正規表現を使って数字を解析し、それを文字に変換して文字列として返してください。 – Onkelborg
"文字列を制御できません"という意味はどうですか?あなたのシナリオは何ですか? –
いいえ私は答えを見つけました:System.Text.RegularExpressions.Regex.Unescape() –