如何在c#中比较亚洲(越南语/ unicode)字符串
本文关键字:越南语 unicode 字符串 比较 | 更新日期: 2023-09-27 18:13:50
我有以下代码:
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");
}
这两个字符串是相同的,但是当使用Equals
检查时,我总是得到false
。如果我将此添加到HashSet<string>
,那么我将在容器中获得两个项目而不是一个项目。
Ð
不是Đ
。
第一个"D"是ANSI字符208,第二个是272。
我使用
进行测试(int)'Ð'
(int)'Đ'
这些是不同的字符,它们看起来是一样的,但实际上不是。
您的字符串由以下字符组成:
'u0042'u0069'u1ec3'u006e 'u00d0'u00f4'u006e'u0067
|||
'u0042'u0069'u1ec3'u006e 'u0110'u00f4'u006e'u0067
通过这个逻辑,您可以找到哪个第一个字符在字符串中是不同的。在这种情况下,它可能很有用。
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();