我有字符串例如:
string str = "ĄĆŹ - ćwrą";
我如何用他们的快捷方式取代ĄĆŹ - ćą? 该示例字符串的结果应为:
str = "\u0104\u0106\u0179 \u2013 \u0107wr\u0105"
有没有快速更换方法?我不想为每个角色使用.Replace ......
答案 0 :(得分:5)
转换为类似的JSON字符串比它应该更麻烦,主要是因为你需要使用Unicode代码点,这在实践中意味着调用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();
}