我正在使用一个特殊的框架来完成这项工作(NHibernate,Castle)。我的问题是;有一个网站,人们可以搜索公寓,房间等。这些网站的大多数用户都是土耳其语。所以我的问题从这里开始。
例如,如果人们搜索单词:Beşiktaş(这是一个地区名称),他们可以搜索这样的贝西克塔斯。正如你所看到的,土耳其语中有一些特殊字符(S,ŞÖO,ĞG,ÇC,İI,ÜU),人们可能正在使用它们。我必须搜索所有这样的条件。例如,如果他们试图搜索Beşiktaş我必须搜索所有变体,如:“Besiktaş,Beşiktaş,BesiktasBeşiktas”,并在此操作后,我必须从我的列表中删除重复的对象。我怎样才能实现这个梦想:)
我只需要这个操作的算法。
抱歉我的英语能力差。谢谢
答案 0 :(得分:0)
你需要研究一下名为CultureInfo的东西,可以利用它来做到这一点。以下是其他人提出的类似问题regarding ignoring accented letters,这与您希望做的事情几乎相同。这是一个发布并被接受为答案的方法,它将比较忽略重音字符的字符串
string s1 = "hello";
string s2 = "héllo";
if (String.Compare(s1, s2, CultureInfo.CurrentCulture, CompareOptions.IgnoreNonSpace) == 0)
{
// both strings are equal
}
如果你使用这个,我会将这些区域存储为没有重音字母的英文名称,并在对数据库执行查询之前比较字符串。这样你就可以让用户使用重音字符以及他们的英文名字。
以下是有关CultureInfo
的MSDN文章的链接