【问题标题】:Convert string to unicode representation [duplicate]将字符串转换为unicode表示[重复]
【发布时间】:2012-10-28 18:50:37
【问题描述】:

可能重复:
Converting Unicode strings to escaped ascii string

如何将ä... 转换为\u0131... 之类的东西?

有什么功能可以做到这一点吗?

ps:

除此之外:[对不起@Kendall Frey :-)]

char a = 'ä';
string escape = "\\u" + ((int)a).ToString("X").PadLeft(4, '0');

【问题讨论】:

  • @JonSkeet 没有 READY 功能吗?
  • 它已准备好供您剪切和粘贴...
  • 也可以剪切和粘贴string.isNullOrEmpty 代码,我的问题是关于像string.isNullOrEmpty这样的现成代码
  • @RoyiNamir 有。我为你写的。
  • 您的回答是“不”。没有内置功能。您必须使用@KendallFrey 的解决方案。

标签: c# .net string


【解决方案1】:

这是一个将 char 转换为转义序列的函数:

string GetEscapeSequence(char c)
{
    return "\\u" + ((int)c).ToString("X4");
}

它不会比单线更好。

不,据我所知没有内置函数。

【讨论】:

  • 我怀疑有一种方法可以让格式字符串中的左填充正确,而不是调用 PadLeft...
  • @JonSkeet -- 我相信只需更改为 ToString("X4") 并删除 PadLeft 即可。
  • 很好。但我首先想到的是:P
  • @KendallFrey:是的,绝对是:)
  • 主要是为了好玩:var s = "ä"; s = new string(s.SelectMany(c => (int)c > 127 ? ("\\u" + ((int)c).ToString("X4")).ToArray() : new char[] { c }).ToArray());
【解决方案2】:

没有内置函数 AFAIK。这是一个非常愚蠢的解决方案。但 Kendall Frey 提供了更好的变体。

string GetUnicodeString(string s)
{
    StringBuilder sb = new StringBuilder();
    foreach (char c in s)
    {
        sb.Append("\\u");
        sb.Append(String.Format("{0:x4}", (int)c));
    }
    return sb.ToString();
}

【讨论】:

    猜你喜欢
    • 2016-02-25
    • 2014-01-07
    • 2020-06-26
    • 1970-01-01
    • 2016-12-10
    • 2019-05-20
    • 1970-01-01
    • 2012-11-27
    • 1970-01-01
    相关资源
    最近更新 更多