如何大写土耳其语 "i"?
How to uppercase Turkish "i"?
在土耳其语中,有两个 i
- 无点: ı, I
- 虚线:i,İ
问题: 每次我大写 i,我得到一个 我。
当我将 大写时,我想得到 İ(仅限土耳其语) i 和 I 当我大写 ı .
我有一个函数可以做到
@objc public static func uppercaseTurkishString(_ string: String) -> String {
return String(string.map { (char) -> Character in
if char == "i" {
return "İ"
} else {
return Character(String(char).uppercased())
}
})
}
但我每次使用它时都必须检查语言是否为土耳其语,并且对应用程序中的每个字符串都进行检查是一项非常艰巨的工作。
有更简单的方法吗?
Foundation
开发人员已经考虑过了,这就是 uppercased(with: Locale?)
:
的原因
"i".uppercased(with: Locale(identifier: "tr_TR")) // returns "İ"
"i".uppercased(with: Locale(identifier: "en_US")) // returns "I"
"ı".uppercased(with: Locale(identifier: "tr_TR")) // returns "I"
问题出在uppercased()
函数不关心Locale
s和小点i看起来像正常英文我。您应该使用 localizedUppercase
,这将为土耳其用户使用土耳其语 Locale
(或者 uppercased(with: Locale(identifier: "tr_TR")
,如果您希望对您应用的所有用户执行此操作,而不管他们的区域设置如何,但我不建议这样做)。
而且大写字母也没有必要一个一个字符的写,完全可以String
.
@objc public static func uppercaseTurkishString(_ string: String) -> String {
return string.localizedUppercase
}
在土耳其语中,有两个 i
- 无点: ı, I
- 虚线:i,İ
问题: 每次我大写 i,我得到一个 我。
当我将 大写时,我想得到 İ(仅限土耳其语) i 和 I 当我大写 ı .
我有一个函数可以做到
@objc public static func uppercaseTurkishString(_ string: String) -> String {
return String(string.map { (char) -> Character in
if char == "i" {
return "İ"
} else {
return Character(String(char).uppercased())
}
})
}
但我每次使用它时都必须检查语言是否为土耳其语,并且对应用程序中的每个字符串都进行检查是一项非常艰巨的工作。
有更简单的方法吗?
Foundation
开发人员已经考虑过了,这就是 uppercased(with: Locale?)
:
"i".uppercased(with: Locale(identifier: "tr_TR")) // returns "İ"
"i".uppercased(with: Locale(identifier: "en_US")) // returns "I"
"ı".uppercased(with: Locale(identifier: "tr_TR")) // returns "I"
问题出在uppercased()
函数不关心Locale
s和小点i看起来像正常英文我。您应该使用 localizedUppercase
,这将为土耳其用户使用土耳其语 Locale
(或者 uppercased(with: Locale(identifier: "tr_TR")
,如果您希望对您应用的所有用户执行此操作,而不管他们的区域设置如何,但我不建议这样做)。
而且大写字母也没有必要一个一个字符的写,完全可以String
.
@objc public static func uppercaseTurkishString(_ string: String) -> String {
return string.localizedUppercase
}