In Swift, come faccio a verificare se il primo carattere di a String
è ASCII o una lettera con un accento? Wider i personaggi, come le emoticon e i logogrammi, non contano.
Sto cercando di copiare come l'app Messaggi iPhonemostra le iniziali di una persona accanto al loro messaggio in una chat di gruppo, ma non include un'indicazione se è una emoticon o un carattere cinese, ad esempio.
Vedo decomposableCharacterSet
& nonBaseCharacterSet
ma non sono sicuro che siano quelli che voglio.
risposte:
2 per risposta № 1Ci sono molti caratteri Unicode con un accento. Questo è per te un personaggio con un accento?
Ê Ð IO E u é⃝
In Unicode ci sono caratteri combinati, che sono due caratteri unicode come uno:
let eAcute: Character = "u{E9}" // é
let combinedEAcute: Character = "u{65}u{301}" // e followed by ́
// eAcute is é, combinedEAcute is é
Per Swift il Character
è la stessa!
Buon riferimento è Qui.
Se vuoi conoscere il CodeUnit dei caratteri nella stringa, puoi usare il utf8
o utf16
proprietà. Sono diversi!
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 é
Quindi è possibile verificare l'alfabeto ASCII A-Z come65-90 e a-z come 97-122. E poi controllare la tomba accentuale standard e acuta À 192 A 193 È 200 É 201 à 224 225 è 232 é 233 ... e quelli combinati e tutto ciò che ti piace.
Ma ci sono simboli che assomigliano a una lettera latina con accento, ma non hanno lo stesso significato!
Dovresti assicurarti che solo questi caratteri sono accettati, che vuoi con il significato linguistico corretto.