我想要做的就是将单个Character
转换为大写,而无需转换为String
然后调用.uppercased()
的开销。有没有任何内置的方式来做到这一点,或者我有一种方法让我从C中调用toupper()
函数而无需任何桥接?我真的不认为我应该为了这么简单的事情而走出困境。如何将单个字符类型转换为大写?
1
A
回答
3
要调用C toupper()
,您需要获取Character
的Unicode代码点。但Character
没有获取其代码点的方法(Character
可能包含多个代码点),因此您必须将Character
转换为String
以获取其任意代码点。
所以你真的必须转换为String
才能找到任何地方。除非您将角色存储为UnicodeScalar
而不是Character
。在这种情况下,你可以这样做:
assert(unicodeScalar.isASCII) // toupper argument must be "representable as an unsigned char"
let uppercase = UnicodeScalar(toupper(CInt(unicodeScalar.value)))
但是,这是不是真的比单纯使用String
更具可读性:
let uppercase = Character(String(character).uppercased())
+2
请注意,最后一行可能会在运行时崩溃,例如,对于'character =“ß”'(这些疯狂的德国人:) –
相关问题
- 1. 如何将每列的第一个字符转换为大写?
- 2. 将字符转换为大写
- 3. 如何将一个类的所有字符串字段转换为大写
- 4. 如何将小写字符转换为大写?
- 5. 如何将字符串转换为Uri类型(简单)
- 6. cocoa:如何将整数类型转换为字符串类型?
- 7. 如何将字符串(字符*)转换为大写或小写用C
- 8. 将字符串转换为'Date'类型
- 9. 将字符串值转换为类型
- 10. 将字符串转换为类型UTCTime
- 11. 将字符串类型转换为int
- 12. 将字符串转换为类型“LuaFunction”
- 13. 将MYSQL_ROW类型转换为字符串
- 14. 如何将字符串转换为泛型类型对象
- 15. 将小写字母转换为大写
- 16. 将小写字母转换为大写
- 17. 如何将字符串转换为大写C++
- 18. 如何将未引用的字符转换为大写?
- 19. 如何将字符串的部分转换为大写?
- 20. 如何将Unicode字符转换为大写的C++
- 21. 如何将字符串转换为大写的蚂蚁?
- 22. 将字符串转换为字符串的泛型类型
- 23. 将字符串中特定字符转换为大写
- 24. 将字符“ß”(大写Eszett字符)转换为“SS”(对于IE)
- 25. mySQL将字符串中的字符转换为大写
- 26. 如何将大型XML转换为java中的字符串
- 27. 如何将大型字符串转换为java中的整数?
- 28. 如何将单个字母转换为大写字母。 Like wiki to wIkI
- 29. 如何将字符串转换为任何类型的对象?
- 30. 如何将小写字符串转换为大写字母,反之亦然?
我认为你必须通过串去。单个字符的大写版本也可以是具有多个字符的字符串,例如, “ß” - >“SS”。 –
'toupper()'只在'char'上运行,并且依赖于语言环境。 –
另一个例子:“ffi”(连字) - >“FFI”。或“ᾀ”(某些希腊字母) - >“ἈΙ” –