CSS 中的德语字符 ß 大写

German character ß uppercased in SS

我发现,使用大写 () 时“ß”会转换为 "SS"。但是我想比较两个字符串是否相等而不区分大小写。 因此,当比较 "gruß" 与 "GRUß" 时,它应该与比较 "gru" 与 "Gru" 时相同。 德语中没有大写的“ß”!因为我不知道还有哪些字符在相应的语言中不可用,所以我无法过滤所有没有 1:1 大写对手的字符。 我能做什么?

使用caseInsensitiveCompare()而不是转换字符串 大写或小写:

let s1 = "gruß"
let s2 = "GRUß"

let eq = s1.caseInsensitiveCompare(s2) == .orderedSame
print(eq) // true

这会以不区分大小写的方式比较字符串 Unicode 标准。

还有localizedCaseInsensitiveCompare() 根据当前语言环境进行比较,并且

s1.compare(s2, options: .caseInsensitive, locale: ...)

根据任意给定进行不区分大小写的比较 语言环境。

好吧,"GRUß" 首先是没有意义的,因为你所说的原因。您不能将任意数据扔到计算机上并期望它以理智的方式处理它:-) 如果您必须处理无效输入,您可能应该有一个预处理阶段来清理您所知道的废话。

话虽如此,这有效 (Swift 3.0):

let grusz = "GRUß"
let gruss = "GRUSS"
if grusz.compare(gruss, options: .caseInsensitive) == .orderedSame { 
   print("MATCHES") 
}