たとえば、文字列があります:
string str = "ĄĆŹ - ćwrą";
ĄĆŹ - ćą をショートカットに置き換えるにはどうすればよいですか? その例の文字列の結果は次のようになります。
str = "\u0104\u0106\u0179 \u2013 \u0107wr\u0105"
迅速な交換方法はありますか?使いたくない.Replace for each character...
そのような JSON 文字列への変換は、実際にはchar.ConvertToUtf32
. そのためには、サロゲート ペアを何らかの方法で処理する必要があります。System.Globalization.StringInfo
それを助けることができます。
これらのビルディング ブロックを使用して変換を実行する関数を次に示します。
string str = "ĄĆŹ - ćwrą";
public string ToJsonString(string s)
{
var enumerator = StringInfo.GetTextElementEnumerator(s);
var sb = new StringBuilder();
while (enumerator.MoveNext())
{
var unicodeChar = enumerator.GetTextElement();
var codePoint = char.ConvertToUtf32(unicodeChar, 0);
if (codePoint < 0x80) {
sb.Append(unicodeChar);
}
else if (codePoint < 0xffff) {
sb.Append("\\u").Append(codePoint.ToString("x4"));
}
else {
sb.Append("\\u").Append((codePoint & 0xffff).ToString("x4"));
sb.Append("\\u").Append(((codePoint >> 16) & 0xffff).ToString("x4"));
}
}
return sb.ToString();
}