본문 바로가기

iOS

[Swift] 영문자로만 이루어진 String 알아내기 + String Index 쉽게 접근하기

영문자로 된 글자만 유효하고, 기타 공백, 숫자, 특수 문자가 들어있는 경우는 제외하는 경우 

Swift로 코드를 어떻게 짜볼까? 

 

두가지 방법이 있을 수 있다.

1. 기타 공백, 숫자, 특수 문자의 문자열을 정의해서 포함하는 지 여부 확인

2. 영문자인 문자열을 정의해서 포함하는 지 여부 확인 

 

func makingArr(_ str: String) -> [String] {
    var result = [String]()
    for i in 0..<str.count - 1 {
        if "a"..."z" ~= str[i] && "a"..."z" ~= str[i + 1] {
            result.append(str[i] + str[i + 1])
        }
    }
    return result
}
func checkStringSpecialRule(_ str: String) -> Bool {
    for character in str {
        if "~₩!@#$%^&*()_-+=}{\";:/?.>,<\\| 1234567890".contains(character) {
            return false
        }
    }
    return true
}

 

String에 접근하기 위해서는 String.Index로 접근하여야한다. 이가 너무 귀찮은 방법이기 때문에

편하게 사용하는 두가지 방법이 있다. 

 

1. String을 Array화 시킨 후 index로 접근

2. subscript 작성

Array(str)
extension String {
    subscript(idx: Int) -> String? {
        guard (0..<count).contains(idx) else {
            return nil
        }
        let target = index(startIndex, offsetBy: idx)
        return String(self[target])
    }
    subscript (r: Range<Int>) -> String {
        let start = self.index(self.startIndex, offsetBy: r.lowerBound)
        let end = self.index(self.startIndex, offsetBy: r.upperBound)

        return String(self[start...end])
    }
}