在Swift中,如何检查String
的第一个字符是ASCII还是带重音的字母? 更广泛的字符,如表情符号和&记录,不要算。
我正在尝试复制iPhone消息应用程序在群聊中在消息旁边显示个人姓名首字母的方式。但是,如果它是表情符号或中文字符,则不包括首字母。
我看到decomposableCharacterSet
& nonBaseCharacterSet
,但我不确定这些是否是我想要的。
答案 0 :(得分:2)
有许多带有重音的Unicode字符。 这是一个带有重音的角色吗?
Ê d 一世 Ë ü é⃝
在Unicode中有组合字符,它们是两个unicode字符:
let eAcute: Character = "\u{E9}" // é
let combinedEAcute: Character = "\u{65}\u{301}" // e followed by ́
// eAcute is é, combinedEAcute is é
对于Swift,Character
是相同的!
好的参考是here。
如果您想知道字符串中字符的CodeUnit,可以使用utf8
或utf16
属性。他们是不同的!
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字母A-Z为65-90,a-z为97-122。 然后检查标准重音坟墓和急性 À192 Á193 È200 É201 à224 225 è232 é233 ......以及你喜欢的组合和一切。
但有些符号看起来像带有重音的拉丁字母,但含义不一样!
您应该确保只接受这些字符,并且具有正确的语言含义。