2

在 Swift 中,如何检查 a 的第一个字符String是 ASCII 还是带重音符号的字母?更宽的字符,如表情符号和徽标,不算在内。

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

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

4

1 回答 1

3

有许多带有重音符号的 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,你可以使用utf8orutf16属性。它们不一样!

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 ... 以及组合的重音和您喜欢的所有内容。

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

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

于 2014-08-08T13:02:23.767 回答