C# 如何比较不区分大小写和不区分重音的字符串
如何比较不区分大小写和不区分重音的字符串 好的,这在SQL server上很容易完成 然而,我想在C#NET 4.5.1上也这样做 我怎样才能用最合适的方式做到这一点 我的意思是这3个字符串在比较时应该返回相等的值C# 如何比较不区分大小写和不区分重音的字符串,c#,.net,string-comparison,case-insensitive,accent-insensitive,C#,.net,String Comparison,Case Insensitive,Accent Insensitive,如何比较不区分大小写和不区分重音的字符串 好的,这在SQL server上很容易完成 然而,我想在C#NET 4.5.1上也这样做 我怎样才能用最合适的方式做到这一点 我的意思是这3个字符串在比较时应该返回相等的值 http://www.buroteknik.com/metylan-c387c4b0ft-tarafli-bant-12cm-x25mt_154202.html http://www.buroteknik.com/METYLAN-C387C4B0FT-TARAFLI-BANT-12c
http://www.buroteknik.com/metylan-c387c4b0ft-tarafli-bant-12cm-x25mt_154202.html
http://www.buroteknik.com/METYLAN-C387C4B0FT-TARAFLI-BANT-12cm-x25mt_154202.html
http://www.buroteknik.com/METYLAN-C387C4B0FT-TARAFLı-BANT-12cm-x25mt_154202.html
我需要一个方法,可以说这2个下面是相同的SQL server说他们是平等的
tarafli
TARAFLİ
您可以使用
字符串。将
与重载进行比较,重载采用适当的文化信息
和比较选项
:
string.Compare(s1, s2, CultureInfo.CurrentCulture, CompareOptions.IgnoreNonSpace |
CompareOptions.IgnoreCase);
编辑:
关于您关于文化信息
的问题,请联系:
比较使用区域性参数来获取特定于区域性的
信息,如大小写规则和字母顺序
单个字符。例如,特定的区域性可以指定
将某些字符组合视为单个字符
字符,在
特定方式,或字符的排序顺序取决于
前面或后面的字符
要同时忽略大小写和重音,可以使用
string.Compare()
和IgnoreNonSpace
和IgnoreCase
选项,如下所示:
string s1 = "http://www.buroteknik.com/metylan-c387c4b0ft-tarafli-bant-12cm-x25mt_154202.html";
string s2 = "http://www.buroteknik.com/METYLAN-C387C4B0FT-TARAFLI-BANT-12cm-x25mt_154202.html";
string s3 = "http://www.buroteknik.com/METYLAN-C387C4B0FT-TARAFLı-BANT-12cm-x25mt_154202.html";
Console.WriteLine(string.Compare(s1, s2, CultureInfo.CurrentCulture, CompareOptions.IgnoreNonSpace | CompareOptions.IgnoreCase));
Console.WriteLine(string.Compare(s2, s3, CultureInfo.CurrentCulture, CompareOptions.IgnoreNonSpace | CompareOptions.IgnoreCase));
根据您下面的评论,这对tarafli
和TARAFLİ
也有效
以下代码打印0,表示字符串相等:
string s1 = "tarafli";
string s2 = "TARAFLİ";
Console.WriteLine(string.Compare(s1, s2, CultureInfo.CurrentCulture, CompareOptions.IgnoreNonSpace | CompareOptions.IgnoreCase));
这里它使用的是土耳其文化(我在猜测正确的文化是什么)。
这还会打印0:
string s1 = "tarafli";
string s2 = "TARAFLİ";
var trlocale = CultureInfo.GetCultureInfo("tr-TR");
Console.WriteLine(string.Compare(s1, s2, trlocale, CompareOptions.IgnoreNonSpace | CompareOptions.IgnoreCase));
看看这个答案,因为您希望与用户在其机器上运行的文化兼容。请参阅我的编辑。再次感谢您的回答。当我设置不变区域性和不变大小写时,我们可以说MS SQL server也使用该信息吗?MSSQL与任何东西有什么关系?无论哪台机器工作不变区域性和不变大小写,所以我想:D啊我设置了拉丁语,虽然:D我现在明白了。确定此方法对这两个字符串失败:tarafli-TARAFLİ然而SQL server说应该相等此方法对这两个字符串失败:tarafli-TARAFLİ然而SQL server说应该相等be@MonsterMMORPG这些字符串来自哪个地区?@MonsterMMORPG当我尝试使用这些字符串时,效果很好。我会把它放在我的答案中。我也尝试过,它对我很有效(我使用了不变文化)。