相关疑难解决方法(0)

为什么string.Compare似乎不一致地处理重音字符?

如果我执行以下语句:

string.Compare("mun", "mün", true, CultureInfo.InvariantCulture)
Run Code Online (Sandbox Code Playgroud)

结果为'-1',表示'mun'的数值低于'mün'.

但是,如果我执行此语句:

string.Compare("Muntelier, Schweiz", "München, Deutschland", true, CultureInfo.InvariantCulture)
Run Code Online (Sandbox Code Playgroud)

我得到'1',表明'Muntelier,Schewiz'应该排在最后.

这是比较中的错误吗?或者,更有可能的是,在排序包含重音的字符串时,我应该考虑一个规则


这是一个问题的原因是,我正在排序一个列表,然后做一个手动二进制过滤器,意味着让每个字符串以'xxx'开头.

以前我使用的是Linq'Fhere'方法,但现在我必须使用另一个人编写的这个自定义函数,因为他说它表现更好.

但是自定义函数似乎没有考虑.NET具有的"unicode"规则.因此,如果我告诉它过滤'mün',它就找不到任何项目,即使列表中的项目以'mun'开头.

这似乎是因为重音字符的顺序不一致,这取决于重音字符后面的字符.


好的,我想我已经解决了这个问题.

在过滤器之前,我根据每个字符串的前n个字母进行排序,其中n是搜索字符串的长度.

c# sorting diacritics string-comparison

15
推荐指数
2
解决办法
3971
查看次数

C#中的字符串比较更快

我有一个比较两个文件的程序.我运行了visual studio分析,发现我的比较时间很长.比较这两个字符串有更快的方法吗?(我不能使用并行foreach,因为它可能会导致错误.)现在我正在使用并发字典,但我对其他选项持开放态度.:)

var metapath = new ConcurrentDictionary<string, string>();
foreach(var me in metapath)
{
 if (line.StartsWith(me.Key.ToString()))
 {...}
}
Run Code Online (Sandbox Code Playgroud)

c# string performance

3
推荐指数
1
解决办法
343
查看次数