C# 将字符串与具有不可读取字符的字符串进行比较

C# 将字符串与具有不可读取字符的字符串进行比较,c#,C#,我在比较两个字符串时遇到问题。一个字符串中有一个或多个不可读取字符,而另一个字符串相同,但格式可读 当我尝试使用这个时,我遇到了麻烦 if (Alemria=Almería)... 我在桌子上放着这样的绳子 如何做到这一点?使用的重载接受枚举-使用一个CurrentCulture枚举成员 您需要将当前区域性设置为可以按这些字符排序的区域性。试试看 if(var.StartsWith("Almer"))//repalce var with your string var Mes

我在比较两个字符串时遇到问题。一个字符串中有一个或多个不可读取字符,而另一个字符串相同,但格式可读

当我尝试使用这个时,我遇到了麻烦

if (Alemria=Almería)... 
我在桌子上放着这样的绳子

如何做到这一点?

使用的重载接受枚举-使用一个CurrentCulture枚举成员

您需要将当前区域性设置为可以按这些字符排序的区域性。

试试看

    if(var.StartsWith("Almer"))//repalce var with your string var
    MessageBox.Show("String matched");//do watever you want to do here

根据你想要的严格程度,你可以试试这个。如果您知道所讨论的字符仅来自西班牙语字母表,您可以从种子值中删除这些字符,或者使用正则表达式修改您的比较逻辑,以便对目标记录执行相同的操作。例如,从两侧删除所有“ñ”和“n”,并可能添加长度比较以提高可靠性。当然,对所有特殊字符都要这样做,而不仅仅是“ñ”。

看看是否对您有帮助,您可以替换单词中的所有重音字符,然后进行比较。

我想CompareOptions.IgnoreNospace就是您要找的。比较将忽略重音、变音符号和元音标记

        string str1 = "mun";
        string str2 = "mün";
        int result1 = string.Compare(str1, str2, CultureInfo.InvariantCulture, CompareOptions.IgnoreNonSpace);
        int result2 = string.Compare(str1, str2, CultureInfo.CurrentCulture, CompareOptions.IgnoreNonSpace);

但无论如何,阿莱姆里亚和阿尔梅里亚都不一样。看起来它完全是另一个符号。

i是一个可读字符。但是,您可以创建一个自定义字符串比较函数来解释这些字符。try'ifvar.StartsWithAlmer'1==是相等运算符。你真的是说如果Alemria==Almería?因为这是比较两个字符串。如前所述,它将比较两个变量。请定义不可读的。你说字符串是一样的,但是一个不可读,另一个不可读,所以它们实际上是不一样的。你只是想比较每个字符串的可读部分吗?@unholysampler:serior?问题很清楚…所以它也和AlmersuperCaliforagilisticExpialidocious匹配?亲爱的朋友们,实际上我想比较statesName的两个值。一个是我从excel文件得到的,即Almeria,从db端得到的是Almería。。。。所以,当我想从数据库中获取基于“Almeria”的数据时,它什么也不返回……重要的是,我们不知道给定的单词在数据库中是否有特殊字符。。我只是简单地使用excel文件中的值,而不知道它在数据库中的表示形式。。。请帮忙。。。我花了很多时间。。。这只不过是一个安慰。WriteLineAlemria.EqualsAlmería,StringComparison.CurrentCulture;生成False。@Cos-这取决于当前区域性,但我不确定任何区域性中的I==í。我们可以在sql server中执行此比较吗?如果是,那怎么办?