Wie überprüfe ich in Swift, ob das erste Zeichen von a String
ist ASCII oder ein Buchstabe mit einem Akzent? Breiter Zeichen, wie Emoticons & Logogramme, zählen nicht.
Ich versuche zu kopieren, wie die iPhone Messages Appzeigt die Initialen einer Person neben ihrer Nachricht in einem Gruppenchat. Sie enthält jedoch keine Initiale, wenn es sich beispielsweise um ein Emoticon oder ein chinesisches Zeichen handelt.
Aha decomposableCharacterSet
& nonBaseCharacterSet
Aber ich bin mir nicht sicher, ob das das ist, was ich will.
Antworten:
2 für die Antwort № 1Es gibt viele Unicode-Zeichen mit einem Akzent. Ist das für dich ein Charakter mit einem Akzent?
Ê Ð ICH Ḝ Ṹ é
In Unicode gibt es kombinierte Zeichen, die aus zwei Unicode-Zeichen bestehen:
let eAcute: Character = "u{E9}" // é
let combinedEAcute: Character = "u{65}u{301}" // e followed by ́
// eAcute is é, combinedEAcute is é
Für Swift die Character
ist dasselbe!
Gute Referenz ist Hier.
Wenn Sie die CodeUnit der Zeichen in der Zeichenfolge kennen möchten, können Sie die utf8
oder utf16
Eigentum. Sie sind anders!
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 é
Dann könnten Sie nach ASCII-Alphabet A-Z suchen65-90 und a-z als 97-122. Und dann nach dem Standard Akzent gravierend und akut suchen À 192 Á 193 È 200 É 201 à 224 225 è 232 é 233 ... und die kombinierten und alles, was du magst.
Aber es gibt Symbole, die wie ein lateinischer Buchstabe mit Akzent aussehen, aber nicht dieselbe Bedeutung haben!
Sie sollten sicherstellen, dass nur diese Zeichen akzeptiert werden, die Sie mit der richtigen linguistischen Bedeutung haben möchten.