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

如何在LINQ中使用Zip运算符进行不区分大小写的比较

让LINQ Zip字符串比较不区分大小写的方法

你当前的代码通过Zip逐字符比较两个字符串的前100个字符,但默认是区分大小写的。要实现不区分大小写的比较,只需要修改Zip里的比较逻辑即可,这里有两种常用的可靠方式:

方法1:使用Char.Equals指定忽略大小写的比较规则

这种方式更规范,还能通过指定StringComparison避免区域文化带来的差异,推荐使用:

Dim str1 As String = "My first string here..."
Dim str2 As String = "My FIRST string here..."

Dim areEqual As Boolean = str1.Zip(str2, Function(x1, x2) Char.Equals(x1, x2, StringComparison.OrdinalIgnoreCase)) _
                              .Take(100) _
                              .All(Function(equal) equal)

Console.WriteLine(areEqual)

这里用StringComparison.OrdinalIgnoreCase进行序数比较,是不区分大小写比较的最佳实践,不会受系统区域设置影响。

方法2:统一转换为小写/大写后比较

如果不需要考虑区域差异,也可以把两个字符都转换为小写(或大写)后再比较:

Dim str1 As String = "My first string here..."
Dim str2 As String = "My FIRST string here..."

Dim areEqual As Boolean = str1.Zip(str2, Function(x1, x2) Char.ToLowerInvariant(x1) = Char.ToLowerInvariant(x2)) _
                              .Take(100) _
                              .All(Function(equal) equal)

Console.WriteLine(areEqual)

注意尽量用ToLowerInvariant/ToUpperInvariant而非普通的ToLower/ToUpper,避免不同语言区域的字符转换差异。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 06:27:37