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")
}
我发现,使用大写 () 时“ß”会转换为 "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")
}