kotlin.text包的Char.kt文件有以下方法equals()
:
public fun Char.equals(other: Char, ignoreCase: Boolean = false): Boolean {
if (this == other) return true
if (!ignoreCase) return false
if (this.toUpperCase() == other.toUpperCase()) return true
if (this.toLowerCase() == other.toLowerCase()) return true
return false
}
而且我不太明白为什么你需要一个带有toLowerCase()
...的字符串在比较之后的情况下
if (this.toUpperCase() == other.toUpperCase())
返回false
,比较
if (this.toLowerCase() == other.toLowerCase())
可以退货true
吗?
从 Unicode 标准:
此外,例如,您可以给出字符
I
(拉丁文大写 I)和İ
(拉丁文大写 I 带点)。两个大写字符,但都匹配相同的小写字符,因此在不区分大小写的比较中应该被视为相同。英语和 Java 中的类似问题:理解 CaseInsensitiveComparator 中的逻辑。
生成匹配对的代码:https ://ideone.com/a8scLw
PS 该实现
equals
使用了比较的简化版本。为了完整起见,不仅要比较对应的字符,还要比较对应的对应字符。例如, forİ
和ı
方法将返回 false 即使它们都被认为是相等I
的。