안녕하세요~! Swift 5.0에서 Unicode Scalar에 properties가 추가 되었는데요
어떤 특징들이 있는지 함께보시죠~!
들어가기 앞서 유니코드 스칼라 의미 잠깐 보고 가시죠~!
유니코드 문자에 배당된 숫자를 의미 합니다
"U+" + 16진수 형태로 구성 되어있구요 U+0000부터 U+D7FF까지, U+E000부터 U+10FFFF까지의 값이 있습니다
1. 유니코드 속성 검사 Bool 값 추가
scalar properties 에서 제공하는 여러 Bool 값을 이용해서 어떤 문자가 포함 되어있는지 확인 할 수 있습니다.
isMath, isUppercase, isASCIIHexDigit...
let question = "Which is larger, 3 * 3 * 3 or 10 + 10 + 10?"
let hasMathSymbols = question.unicodeScalars.contains(where: {
$0.properties.isMath
})
print(hasMathSymbols)
let name = #"Alice", "bob", "dabel"#
print (name.unicodeScalars.first?.properties.isUppercase ?? "")
2. 유니코드 공식 이름, 버전, 카테고리 추출 가능
특정 유니코드의 공식 이름을 알아 낼 수 있습니다.
print ( "👨❤️👩🍋🥨🎉_n".unicodeScalars.compactMap { $0.properties.name })
print ( "👨❤️👩🍋🥨🎉_n".unicodeScalars.compactMap { $0.properties.age })
print ( "👨❤️👩🍋🥨🎉_n".unicodeScalars.compactMap { $0.properties.generalCategory })
결과 값:
["MAN", "HEAVY BLACK HEART", "VARIATION SELECTOR-16", "WOMAN", "LEMON", "PRETZEL", "PARTY POPPER", "LOW LINE", "LATIN SMALL LETTER N"]
[(major: 6, minor: 0), (major: 1, minor: 1), (major: 3, minor: 2), (major: 6, minor: 0), (major: 6, minor: 0), (major: 10, minor: 0), (major: 6, minor: 0), (major: 1, minor: 1), (major: 1, minor: 1)]
[Swift.Unicode.GeneralCategory.otherSymbol, Swift.Unicode.GeneralCategory.otherSymbol, Swift.Unicode.GeneralCategory.nonspacingMark, Swift.Unicode.GeneralCategory.otherSymbol, Swift.Unicode.GeneralCategory.otherSymbol, Swift.Unicode.GeneralCategory.otherSymbol, Swift.Unicode.GeneralCategory.otherSymbol, Swift.Unicode.GeneralCategory.connectorPunctuation, Swift.Unicode.GeneralCategory.lowercaseLetter]
3. 유니코드 숫자 유형 판단하기
아래 유니코드값이 숫자 타입인지 체크 할 수 있습니다.
let scalars: [Unicode.Scalar] = ["4", "④", "⅕", "X"]
for scalar in scalars {
print(scalar, "-->", scalar.properties.numericType)
}
// 4 --> Optional(Swift.Unicode.NumericType.decimal)
// ④ --> Optional(Swift.Unicode.NumericType.digit)
// ⅕ --> Optional(Swift.Unicode.NumericType.numeric)
// X --> nil
참조:
https://github.com/apple/swift-evolution/blob/main/proposals/0211-unicode-scalar-properties.md
https://developer.apple.com/documentation/swift/unicode/scalar/properties-swift.struct/numerictype
'Apple > Apple_Swift' 카테고리의 다른 글
Swift 5.0 Result Type 소개 (에러 처리를 쉽고 깔끔하게 결과는 명확하게 SE-0235) (0) | 2022.12.27 |
---|---|
Swift5.0 Character Properties (띄어쓰기, 공백, 숫자, 소문자 등등.. 확인 가능해요) SE-0221 (0) | 2022.12.26 |
Swift5.0 Dictionary를 위한 고차함수 .compactMapValues 소개 SE-0218 (2) | 2022.12.23 |
Raw String(문자열)을 쉽게 표현하자 # ... # ("\" 문자 지옥에서 벗어나기) SE-0200 (0) | 2022.12.19 |
Swift Enum의 활용 (구조체 또는 클래스 대신 열거형으로 정리해봐요) (0) | 2020.04.01 |