How can I convert a single Character type to uppercase?
To call the C toupper()
you need to get the Unicode code point of the Character
. But Character
has no method for getting its code point (a Character
may consist of multiple code points), so you have to convert the Character
into a String
to obtain any of its code points.
So you really have to convert to String
to get anywhere. Unless you store the character as a UnicodeScalar
instead of a Character
. In this case you can do this:
assert(unicodeScalar.isASCII) // toupper argument must be "representable as an unsigned char"
let uppercase = UnicodeScalar(toupper(CInt(unicodeScalar.value)))
But this isn't really more readable than simply using String
:
let uppercase = Character(String(character).uppercased())