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

.NET中如何对字符进行不区分大小写的比较?

字符不区分大小写比较的实现方法

当然有办法实现两个字符的不区分大小写比较,完全不用依赖ToUpper()或ToLower()方法,和你熟悉的字符串比较逻辑一脉相承。下面给你两种实用的方案:

1. 使用Char.Compare重载方法

直接利用Char.Compare的重载版本,传入CompareOptions.OrdinalIgnoreCase参数,就能实现和String.Compare一致的不区分大小写比较逻辑:

char char1 = 'b';
char char2 = 'B';
// 比较结果为0表示两个字符不区分大小写相等
int comparisonResult = Char.Compare(char1, char2, CompareOptions.OrdinalIgnoreCase);

if (comparisonResult == 0)
{
    Console.WriteLine("两个字符不区分大小写相等");
}

这个方法采用序数不区分大小写的规则,和你示例中的String.Compare("abc", "ABC", CompareOptions.OrdinalIgnoreCase)逻辑完全匹配,不会受文化差异影响,是最直接的替代方案。

2. 基于特定文化的比较(可选)

如果你的场景需要考虑特定文化的字符规则(比如某些语言中字符大小写转换的特殊逻辑),可以使用CompareInfo.Compare方法:

using System.Globalization;

char charA = 'é';
char charB = 'É';
// 使用不变文化进行比较
CompareInfo compareInfo = CultureInfo.InvariantCulture.CompareInfo;
int result = compareInfo.Compare(charA, charB, CompareOptions.IgnoreCase);

if (result == 0)
{
    Console.WriteLine("基于不变文化的不区分大小写比较相等");
}

这种方式适合有文化适配需求的场景,不过如果只是通用的不区分大小写比较,第一种方法就足够高效可靠。

为什么不推荐转大小写的方式?

其实你提到不想用ToUpper()/ToLower()是很合理的——某些字符在转换大小写后会出现意外行为(比如土耳其语的i和I),而使用CompareOptions.OrdinalIgnoreCase的方式能避免这类问题,同时和字符串比较的逻辑保持统一,更易维护。

内容的提问来源于stack exchange,提问作者Aliaksei Futryn

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:31:23