首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C# UTF-32 ToLower

C# UTF-32 ToLower
EN

Stack Overflow用户
提问于 2010-12-30 08:41:09
回答 1查看 990关注 0票数 0

我正在寻找一种将Unicode UTF-32 (int)转换为小写的方法。在Java中,类似下面这样的代码就可以完成这个任务:

代码语言:javascript
复制
Character.toChars(Character.toLowerCase(Character.codePointAt(text, i)))

我有来自Char.ConvertToUtf32的UTF-32,但似乎没有办法降低这个值。

更新:我正在处理一个字符流/数组,我已经通过查找hi代理找到了代码点,有点类似于上面的Java代码片段。来回转换为字符串将是低效的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-01-11 15:15:26

唯一的内置方法是将UTF-32转换为字符串。下面这样的代码应该是有效的:

代码语言:javascript
复制
static Int32 ToLower(Int32 c)
{
    // Convert UTF-32 character to a UTF-16 String.
    var strC = Char.ConvertFromUtf32(c);

    // Casing rules depends on the culture.
    // Consider using ToLowerInvariant().
    var lower = strC.ToLower();

    // Convert the UTF-16 String back to UTF-32 character and return it.
    return Char.ConvertToUtf32(lower, 0);
}

您指出这对于您的需求来说是低效的。你对它进行基准测试了吗?

如果您仍然坚持在UTF-32上使用大小写,那么您将需要使用自己的大小写。幸运的是,Unicode Consortium已经完成了大部分艰苦的工作。看一下Unicode case folding file。解析该文件,并以适当的结构存储数据。然后,可以用您喜欢的任何格式的数据直接对其进行大小写。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4559128

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档