내가하고 싶은 일은 String
으로 변환 한 다음 .uppercased()
을 호출하는 오버 헤드없이 단일 Character
을 대문자로 변환하는 것입니다. 이 작업을 수행 할 수있는 기본 제공 방법이 있습니까? 아니면 toupper()
함수를 브리징없이 C에서 호출 할 수 있습니까? 나는 정말로 그렇게 단순한 것을 위해 나가야 만한다고 생각하지 않는다.단일 문자 유형을 대문자로 변환하려면 어떻게해야합니까?
1
A
답변
3
C toupper()
을 호출하려면 유니 코드 코드 포인트를 Character
으로 가져와야합니다. 그러나 Character
에는 코드 포인트를 가져 오는 방법이 없습니다 (Character
은 여러 코드 포인트로 구성 될 수 있습니다). Character
을 코드 포인트를 얻기 위해 String
으로 변환해야합니다.
그래서 어디서나 이동하려면 실제로 String
으로 변환해야합니다. 문자를 Character
대신 UnicodeScalar
으로 저장하지 않는 한.
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. UTF-8 문자열을 대문자로 변환하려면 어떻게해야합니까?
- 2. Vim에서 영어 이외의 텍스트를 대문자로 변환하려면 어떻게해야합니까?
- 3. Visual Studio에서 코드 문자열을 대문자로 변환하려면 어떻게해야합니까?
- 4. ActionScript 3에서 문자열을 문자 배열로 변환하려면 어떻게해야합니까?
- 5. 문자 코드를 문자로 다시 변환하려면 어떻게해야합니까?
- 6. 특수 문자 \ u0097을 NsString로 변환하려면 어떻게해야합니까?
- 7. int를 char로 변환하려면 어떻게해야합니까?
- 8. NSString을 NSData로 변환하려면 어떻게해야합니까?
- 9. DiffTime을 NominalDiffTime으로 변환하려면 어떻게해야합니까?
- 10. IList 형식으로 변환하려면 어떻게해야합니까?
- 11. 문자 배열 : 자바에서 대문자로 문자 대체
- 12. mySQL DATETIME 유형을 Javascript에서 사용할 문자열로 변환하려면 어떻게해야합니까?
- 13. std :: basic_string 유형을 char 유형의 배열로 변환하려면 어떻게해야합니까?
- 14. 문자열 내에서 대문자로 문자 만들기
- 15. 파이썬에서 문자 함수를 대문자로 바꾸기
- 16. BLOB를 MySQL의 텍스트로 변환하려면 어떻게해야합니까?
- 17. 이미지를 ASCII 표현으로 변환하려면 어떻게해야합니까?
- 18. crypt() 해시를 파일 이름으로 변환하려면 어떻게해야합니까?
- 19. C#에서 ASCII 문자 254를 다른 것으로 변환하려면 어떻게해야합니까?
- 20. 문자열의 특수 문자 만 유니 코드로 변환하려면 어떻게해야합니까?
- 21. 유니 코드 코드 포인트 범위를 NSString 문자 범위로 변환하려면 어떻게해야합니까?
- 22. 64 비트 정수를 문자 배열로 변환하고 다시 변환하려면 어떻게해야합니까?
- 23. 문자열 (한 문자)을 squeak의 문자로 변환하려면 어떻게해야합니까?
- 24. 액티브 레코드 개체 배열의 단일 열을 문자열 배열로 변환하려면 어떻게해야합니까?
- 25. Unichar Array를 단일 NSString으로 변환하려면
- 26. JSONArray를 JSONObject로 변환하려면 어떻게해야합니까?
- 27. eps를 jpg로 변환하려면 어떻게해야합니까?
- 28. NSDecimalNumber를 NSInteger로 변환하려면 어떻게해야합니까?
- 29. DIB를 BMP로 변환하려면 어떻게해야합니까?
- 30. IntPtr을 스트림으로 변환하려면 어떻게해야합니까?
을 당신이 문자열을 통해 갈 필요가 생각합니다. 또한 단일 문자의 대문자 버전은 여러 문자가 포함 된 문자열 일 수 있습니다 (예 : "ß"- "SS". –
또한'toupper()'는'char'에서만 작동하며 로케일에 의존합니다. –
다른 예 : "ffi"(합자) -> "FFI". 또는 "ᾀ"(일부 그리스 문자) -> "ἈΙ" –