【发布时间】:2019-03-17 13:44:50
【问题描述】:
这发生在 C# 和 Java 中,所以我认为这不是错误,只是想知道为什么。
var s = "????";
var lower = s.ToLower();
var upper = s.ToUpper();
if (!lower.Equals(upper, StringComparison.OrdinalIgnoreCase))
{
//How can this happen?
}
根据this page,小写“????”是“????”,与IgnoreCase 选项比较时它们应该相等。为什么他们不相等?
【问题讨论】:
-
@AccessDenied 原题中的测试用例绰绰有余,够荒谬
-
你用的是什么java代码?
-
幕后工作原理:第 697 行 GlobalizationNative_CompareStringOrdinalIgnoreCase github.com/dotnet/coreclr/blob/…
-
这就是为什么它在 Java 中的工作方式相同。它使用相同的库icu-project.org