我有以下代码:
Thread.CurrentThread.CurrentCulture = new CultureInfo("vi-VN");
string a = "Biển Ðông";
string b = "Biển Đông";
if (a.Equals(b, StringComparison.CurrentCulture))
{
Console.WriteLine("Yes");
}
这两个字符串是相同的,但在使用false
进行检查时,我总是得到Equals
。如果我将其添加到HashSet<string>
,那么我将在容器中获得两个项目而不是一个项目。
答案 0 :(得分:4)
Ð
不是Đ
。
第一个&#34; D&#34;是ANSI字符208,第二个是272。
我使用
测试了这个(int)'Ð'
(int)'Đ'
这些是不同的字符,看起来相同,但不是。
答案 1 :(得分:2)
你的字符串由以下字符组成:
\u0042\u0069\u1ec3\u006e \u00d0\u00f4\u006e\u0067
|||
\u0042\u0069\u1ec3\u006e \u0110\u00f4\u006e\u0067
答案 2 :(得分:0)
通过这个逻辑你可以找到,第一个字符在字符串中是不同的。在这种情况下它可能很有用。
char? firstocurrenceA = string1.Zip(string2, (a, b) => new { string1 = a, string2 = b })
.Where(x => x.string1 != x.string2)
.Select(x => x.string1)
.FirstOrDefault();
char? firstocurrenceB = string1.Zip(string2, (a, b) => new { string1 = a, string2 = b })
.Where(x => x.string1 != x.string2)
.Select(x => x.string2)
.FirstOrDefault();