Swift:检查String的第一个字符是ASCII还是带重音的字母

时间:2014-08-08 12:17:41

标签: swift ascii diacritics nscharacterset

在Swift中,如何检查String的第一个字符是ASCII还是带重音的字母? 更广泛的字符,如表情符号和&记录,不要算。

我正在尝试复制iPhone消息应用程序在群聊中在消息旁边显示个人姓名首字母的方式。但是,如果它是表情符号或中文字符,则不包括首字母。

我看到decomposableCharacterSet& nonBaseCharacterSet,但我不确定这些是否是我想要的。

1 个答案:

答案 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,可以使用utf8utf16属性。他们是不同的!

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 ......以及你喜欢的组合和一切。

但有些符号看起来像带有重音的拉丁字母,但含义不一样!

您应该确保只接受这些字符,并且具有正确的语言含义。