.net字符串与排序规则的比较

时间:2014-10-21 09:53:43

标签: c# utf-8 collation string-comparison

我有两个不同的字符串(XXÈXXE)。有没有办法比较它们使用整理(对于这种情况,它将是UTF8 general CI - 我需要它们是相等的)?我见过几个涉及MSSQL或SQLLite的例子 - 但这会给我的项目增加一个不必要的依赖。所以,我的问题是 - 有没有办法在纯.net(特别是c#)中做到这一点?

更新

让我们以任何体面的SQL引擎为例。您可以创建表,也可以选择表的排序规则。在我们的示例中,XXÈXXE将存储在表格中,它们将具有不同的二进制表示形式(取决于编码),但是当您搜索XXE时,它也会匹配XXÈ

我的情况非常相似。我有一个文本文件,其中包含一些字符串(UTF8)。我想在屏幕上显示值(排序 - 再次排序的位置,相对重要),我想让用户搜索值。用于搜索的排序规则将是一个选项。

1 个答案:

答案 0 :(得分:0)

您可以使用String.Normalize和一点LINQ-power:

string initial = "XXÈ";
string normal = initial.Normalize(NormalizationForm.FormD);

var withoutDiacritics = normal.Where(
    c => CharUnicodeInfo.GetUnicodeCategory(c) != UnicodeCategory.NonSpacingMark);
string final = new string(withoutDiacritics.ToArray());
bool equals = "XXE".Equals(final); // true

参考:http://www.blackwasp.co.uk/RemoveDiacritics.aspx

相关问题