2

可能重复:
忽略字符串比较中的重音字母

我正在使用一个特殊的框架来完成这项工作(NHibernate,Castle)。我的问题是;有一个网站,人们可以在其中搜索公寓、房间等。这些网站的大多数用户都是土耳其人。所以我的问题从这里开始。

例如,如果人们搜索这个词:Beşiktaş(这是一个地区名称),他们可以像这样搜索 Besiktas。如您所见,土耳其语中有一些特殊字符(S、Ş Ö O、Ğ G、Ç C、İ I、Ü U),人们可能会同时使用它们。我必须像这样搜索所有条件。例如,如果他们尝试搜索 Beşiktaş,我必须搜索所有变体,例如:“Besiktaş、Beşiktaş、Besiktas Beşiktas”,并且在此操作之后,我必须从列表中删除重复的对象。我怎样才能让这个梦想成真:)

我只需要这个操作的算法。

对不起,我的英语水平很差。谢谢你

4

1 回答 1

0

您需要查看可以用来执行此操作的名为 CultureInfo 的东西。这是其他人就忽略重音字母提出的类似问题,这与您希望做的几乎相同。这是一种已发布并被接受为答案的方法,它将比较忽略重音字符的字符串

string s1 = "hello";
string s2 = "héllo";

if (String.Compare(s1, s2, CultureInfo.CurrentCulture, CompareOptions.IgnoreNonSpace) == 0)
{
    // both strings are equal
}

如果您使用它,我会将地区存储为不带重音字母的英文名称,并在对数据库执行查询之前比较字符串。这样,您将允许用户使用重音字符以及他们的英文名称。

这是有关CultureInfo的 MSDN 文章的链接

于 2012-11-20T09:08:15.940 回答