[英].net string comparison with collation
我有2个不同的字符串( XXÈ
和XXE
)。 有什么方法可以使用归类比较它们(在这种情况下,它将是UTF8 general CI
我需要它们相等)? 我见过一些涉及MSSQL或SQLLite的示例-但这会给我的项目增加不必要的依赖。 所以,我的问题是-有什么方法可以在纯.net(尤其是C#)中做到这一点?
更新:
让我们以任何不错的SQL引擎为例。 您可以创建表格,也可以选择表格的排序规则。 在我们的情况下, XXÈ
和XXE
将存储在表中,它们将具有不同的二进制表示形式(取决于编码),但是当您搜索XXE
,它也会与XXÈ
匹配。
我的情况非常相似。 我有一个带有一些字符串的文本文件(UTF8)。 我想在屏幕上显示值(排序-排序规则再次出现,相对重要),我想让用户搜索值。 用于搜索的排序规则将是一个选项。
您可以使用String.Normalize
和一点LINQ功能:
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.