. 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吗?或者我错过了什么?
似乎CultureInfo.InvariantCulture.CompareInfo.LastIndexOf
的startIndex
参数需要是字符串的长度,因为它是向后搜索的。
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