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

.NET 5及以上版本中使用InvariantCultureIgnoreCase时IndexOf方法存在异常?

.NET 5及以上版本中使用InvariantCultureIgnoreCase时IndexOf方法存在异常?

嘿,我发现了一个在.NET 5及以上版本里,IndexOf方法搭配InvariantCultureIgnoreCase比较时的奇怪问题,跟你详细唠唠:

首先,先看这个基础的等价验证:用string.Equals比较"est"和"est",指定System.StringComparison.InvariantCultureIgnoreCase的话,结果是返回True——这是因为按照Unicode规范,字符st等价于"ST",所以这个结果是合理的。

接着看正常的IndexOf调用:

"est".IndexOf("est", System.StringComparison.InvariantCultureIgnoreCase) // 返回 0

返回0,这符合预期,毕竟我们已经确认两个字符串在该比较规则下是等价的。

但奇怪的地方来了!如果给源字符串前面加个空格,变成" est",再调用同样的方法:

" est".IndexOf("est", System.StringComparison.InvariantCultureIgnoreCase) // 返回 -1

结果居然返回-1,这就完全不符合预期了!明明按照之前的等价规则," est"里的"est"部分应该和"est"匹配才对,但实际就是找不到,太反常了。

备注:内容来源于stack exchange,提问作者nrofis

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.15 15:39:35