. net CultureInfo.InvariantCulture.CompareInfo IndexOf vs La

本文关键字:vs La IndexOf CompareInfo CultureInfo InvariantCulture net | 更新日期: 2023-09-27 17:53:04

在我们的应用程序中,我想成为一个好公民,从文化意识字符串比较转移到InvariantCulture中的一些确定性比较,但由于无限循环,我的应用程序开始崩溃OutOfMemory。

这一切都归结为这个。我在即时窗口中对其进行了评估:

CultureInfo.InvariantCulture.CompareInfo.IndexOf("(např. BroadSwo", " ", 0, CompareOptions.IgnoreCase | CompareOptions.IgnoreNonSpace);
6
CultureInfo.InvariantCulture.CompareInfo.LastIndexOf("(např. BroadSwo", " ", 0, CompareOptions.IgnoreCase | CompareOptions.IgnoreNonSpace);
-1

这到底是怎么回事?

当具有相同文化和相同输入的IndexOf给我"发现一些"时,LastIndexOf如何给我"未找到"?

这是一个BUG吗?或者我错过了什么?

. net CultureInfo.InvariantCulture.CompareInfo IndexOf vs La

似乎CultureInfo.InvariantCulture.CompareInfo.LastIndexOfstartIndex参数需要是字符串的长度,因为它是向后搜索的。

CultureInfo.InvariantCulture.CompareInfo.LastIndexOf("(např. BroadSwo", " ", 15, CompareOptions.IgnoreCase | CompareOptions.IgnoreNonSpace)

IndexOf一样返回6。

我错了

LastIndexOf从源的末尾开始搜索。所以当我设置startPosition = 0时,它从位置0移动到0,没有找到任何东西。

正确的LastIndexOf调用是:

CultureInfo.InvariantCulture.CompareInfo.LastIndexOf("(např. BroadSwo", " ", "(např. BroadSwo".Length - 1, CompareOptions.IgnoreCase | CompareOptions.IgnoreNonSpace);
6