在我们的应用程序中,我想成为好公民,并从文化感知字符串比较转移到 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)
它返回 6,IndexOf
也是如此。
关于c# - .NET CultureInfo.InvariantCulture.CompareInfo IndexOf 与 LastIndexOf - 发生了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38088353/