【问题标题】:Replacing unicode characters in string in C#在C#中替换字符串中的unicode字符
【发布时间】:2013-06-20 02:47:11
【问题描述】:

我有字符串例如:

string str = "ĄĆŹ - ćwrą";

如何用他们的快捷方式替换 ĄĆŹ - ćą? 该示例字符串的结果应该是:

str = "\u0104\u0106\u0179 \u2013 \u0107wr\u0105"

有什么快速更换的方法吗?我不想为每个字符使用 .Replace...

【问题讨论】:

标签: c# string unicode utf-8


【解决方案1】:

转换成这样的 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();
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-01-24
    • 1970-01-01
    • 2011-10-20
    • 2012-08-30
    • 1970-01-01
    • 2014-07-30
    • 1970-01-01
    相关资源
    最近更新 更多