繁体   English   中英

在C#中替换字符串中的unicode字符

[英]Replacing unicode characters in string in C#

我有字符串例如:

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

我如何用他们的快捷方式取代ĄĆŹ - ćą? 该示例字符串的结果应为:

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

有没有快速更换方法? 我不想为每个角色使用.Replace ...

转换为类似的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();
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM