기어가더라도 제대로

[SwiftUI-기초] String 과 작업하기 본문

SwiftUI - 기초

[SwiftUI-기초] String 과 작업하기

Damagucci-juice 2022. 10. 24. 23:12

- 스트링을 스트링 배열로 쪼개기

- - 공백을 기준으로 나누기, 줄바꿈을 기준으로 나누기

// 공백 기준으로 배열에 나눠담기
let input = "a b c"
let letters = input.components(separatedBy: " ")

// \n(줄바꿈) 기준으로 배열에 나눠담기
let input = """
            a
            b
            c
            """
let letters = input.components(separatedBy: "\n")

- 랜덤은 옵셔널을 반환한다. 

let letter = letters.randomElement() ?? ""

- 양끝에 특정 chracterSet 지우기 - trimmingChracters(in: )

var str1 = "     Learn  Swift Programming "
var str2 = "Learn \nSwift Programming\n\n   "

print(str1.trimmingCharacters(in: .whitespaces))
print(str2.trimmingCharacters(in: .whitespaces))

- 출력

 

오타 고치기, UITextChecker 4단계

- 1. 단어와 체커 생성

- 2. 단어 체킹할 범위 알려주기.NS, OBJC 문법

let range = NSRange(location: 0, length: word.utf16.count)

- 3. 설정값을 넘김, 시작점, 언어, wrap 여부, 등 -> 어디가 잘못되었는지 범위가 나옴

let misspelledRange = checker.rangeOfMisspelledWord(in: word, range: range, startingAt: 0, wrap: false, language: "en")

- - 오탈자가 없는 경우 NSNotFound 라는 값이 넘어옴(옵셔널이 OBJC엔 없기 때문)

-4. 오탈자가 있는지 없는지 확인 

let allGood = misspelledRange.location == NSNotFound

 

샘플 작업 

func isReal(word: String) -> Bool {
    let checker = UITextChecker()
    let range = NSRange(location: 0, length: word.utf16.count)
    let misspelledRange = checker.rangeOfMisspelledWord(in: word, range: range, startingAt: 0, wrap: false, language: "en")
    return misspelledRange.location == NSNotFound
}
  • UITextChecker() 를 생성
  • 받은 단어의 전체 범위를 나타내도록 NSRange 생성
    • word.utf16.count 가 눈에 띈다. 
  • checker 의 rangeOfMisspelledWord() 메서드가 단어의 오탈자인 부분을 반환한다.
  • 만약 location 이 발견되지 않으면 NSNotFound 라는 값을 반환할 것이다. 
Comments