You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#如何按Unicode全大小写映射规则(无文化定制)实现字符串转大写?

实现Unicode全大小写映射的C#方案

你遇到的问题源于.NET默认的String.ToUpper()和String.ToUpperInvariant()采用Unicode简单大小写映射,而你需要的是全大小写映射(比如ß→SS)。以下是可行的解决方案:

1. 第三方库:ICU4N(推荐)

ICU是完全遵循Unicode标准的国际化组件库,其.NET移植版ICU4N支持完整的全大小写映射规则,且不依赖特定区域性。

操作步骤:

  • 通过NuGet安装ICU4N:
    Install-Package ICU4N
    
  • 使用示例代码:
    using ICU4N.Text;
    
    string input = "ßabc";
    string upperResult = CaseMap.Fold.ToUpper(input);
    // 输出结果为 "SSabc"
    

2. .NET 6+内置有限支持

在.NET 6及更高版本中,ToUpperInvariant()和ToUpper(CultureInfo.InvariantCulture)已对部分字符的全映射规则进行了更新,例如:

string result = "ß".ToUpperInvariant();
// .NET 6+返回"SS",旧版本返回"ß"

但这种更新仅覆盖了部分常用字符,若需要完整覆盖所有Unicode全大小写映射规则,仍建议使用ICU4N。

3. 自定义映射(仅适用于有限场景)

如果不想引入第三方库,可以针对特定字符手动补充映射,但这种方式无法覆盖所有Unicode字符,仅适用于需求场景有限的情况:

public static string ToUnicodeUpper(string input)
{
    return input.Replace("ß", "SS")
                .ToUpperInvariant();
}

内容的提问来源于stack exchange,提问作者Michael Kay

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 05:25:20