我有两个不同的字符串(XXÈ
和XXE
)。有没有办法比较它们使用整理(对于这种情况,它将是UTF8 general CI
- 我需要它们是相等的)?我见过几个涉及MSSQL或SQLLite的例子 - 但这会给我的项目增加一个不必要的依赖。所以,我的问题是 - 有没有办法在纯.net(特别是c#)中做到这一点?
更新
让我们以任何体面的SQL引擎为例。您可以创建表,也可以选择表的排序规则。在我们的示例中,XXÈ
和XXE
将存储在表格中,它们将具有不同的二进制表示形式(取决于编码),但是当您搜索XXE
时,它也会匹配XXÈ
。
我的情况非常相似。我有一个文本文件,其中包含一些字符串(UTF8)。我想在屏幕上显示值(排序 - 再次排序的位置,相对重要),我想让用户搜索值。用于搜索的排序规则将是一个选项。
答案 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