德语字符ß在SS中大写

时间:2016-12-09 11:57:51

标签: swift uppercase lowercase

我发现,当使用uppercased()时,“ß”会转换为“SS”。但是我希望比较两个字符串是否相等而不区分大小写。 因此,当将“gruß”与“GRUß”进行比较时,它应该与将“gru”与“Gru”进行比较时相同。 德语中没有大写的“ß”!因为我不知道相应语言中没有哪些其他字符,所以我无法过滤掉所有没有1:1大写对手的字符。 我该怎么办?

2 个答案:

答案 0 :(得分:3)

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

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

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

根据不区分大小写的方式比较字符串 Unicode标准。

还有localizedCaseInsensitiveCompare() 根据当前区域设置进行比较,

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

根据任意给定的不区分大小写的比较 区域设置。

答案 1 :(得分:1)

嗯,“GRUß”首先是非感性的,因为你说的理由。你不能在计算机上抛出任意数据并期望它以理智的方式处理它:-)如果你必须处理无效的输入,你应该有一个预处理阶段来清理你知道的垃圾。

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

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