在 Swift 中,如何检查 a 的第一个字符String
是 ASCII 还是带重音符号的字母?更宽的字符,如表情符号和徽标,不算在内。
我正在尝试复制 iPhone 消息应用程序如何在群聊中的消息旁边显示一个人的姓名首字母。但是,如果是表情符号或汉字,则不包括首字母。
我看到decomposableCharacterSet
& nonBaseCharacterSet
,但我不确定这些是否是我想要的。
在 Swift 中,如何检查 a 的第一个字符String
是 ASCII 还是带重音符号的字母?更宽的字符,如表情符号和徽标,不算在内。
我正在尝试复制 iPhone 消息应用程序如何在群聊中的消息旁边显示一个人的姓名首字母。但是,如果是表情符号或汉字,则不包括首字母。
我看到decomposableCharacterSet
& nonBaseCharacterSet
,但我不确定这些是否是我想要的。
有许多带有重音符号的 Unicode 字符。这对你来说是一个有口音的角色吗?
Ê Ð Ï Ḝ Ṹ é⃝</p>
在 Unicode 中有组合字符,即两个 unicode 字符合二为一:
let eAcute: Character = "\u{E9}" // é
let combinedEAcute: Character = "\u{65}\u{301}" // e followed by ́
// eAcute is é, combinedEAcute is é
对于 SwiftCharacter
来说也是一样的!
很好的参考在这里。
如果你想知道字符串中字符的 CodeUnit,你可以使用utf8
orutf16
属性。它们不一样!
let characterString: String = "abc"
for character in characterString.utf8 {
print("\(character) ")
}
// output are decimal numbers: 97 98 99
// output of only é: 195 169, used the combined é
然后您可以检查 ASCII 字母 AZ 为 65-90 和 az 为 97-122。然后检查标准重音重音和重音 À 192 Á 193 È 200 É 201 à 224 á 225 è 232 é 233 ... 以及组合的重音和您喜欢的所有内容。
但是有些符号看起来像带有重音的拉丁字母,但含义不同!
您应该确保只接受这些字符,并且您希望具有正确的语言含义。