两个字符串值相同但CompareTo不返回0

时间:2016-01-07 11:51:21

标签: c# wpf string character-encoding string-comparison

我创建了wpf应用程序。有些情况我比较两个字符串值。本地值来自richtextbox,而richtextbox值来自word文档。我尝试了site的所有解决方案。但没有改变。比较等于假。我尝试用linkedWord.Replace((char)160, (char)32);

替换文件末尾

尝试使用string.Compare

String.Compare(wr.Orthography, linkedWord, StringComparison.OrdinalIgnoreCase) == 0

使用Encoding到字节数组和 SequanceEqual 以及更多,但找不到解决方案。 请帮我解决这个问题。

该值来自richtextbox: enter image description here

值来自数据库:

enter image description here

修改

比较后,方法结果为 -1

1 个答案:

答案 0 :(得分:1)

原因可能是西里尔字母ә(ә)和拉丁语ə(ə)虽然看起来不一样,但却不同。

检查每个角色是否相等,下面你可以看到差异:

foreach (char c in "bәse")
    Console.Write(((int)c).ToString("0000"));

Console.WriteLine("\n--------------------");

foreach (char c in "bəse")
    Console.Write(((int)c).ToString("0000"));

Console.WriteLine("\n--------------------");

Console.WriteLine(("bәse"=="bəse").ToString());

输出

0098124101150101
--------------------
0098060101150101
--------------------
False

DOTNETFIDDLE

在这种情况下,您应该用拉丁语对应物替换西里尔字符

您可以看到here并查看here,似乎有一个可以在这种情况下使用的库