본문 바로가기

code snippet

[Swift] 문자열 자르기 - substring

Swift 의 문자열 자르기(substring) 기능은 매우 귀찮다!


var str = "Hello, Swift Language"


Swift에서 문자열을 자르는 함수 - substring은 String.Index 를 사용하는데, 이게 임의의 값을 설정할 수가 없다!

advance 함수를 이용해서 일정 거리(distance)만큼 밀어버린 인덱스(String.Index)를 생성해서 잘라내야 한다.


let startIndex = advance(str.startIndex, 1)

let endIndex = advance(str.startIndex, 5)

str.substringToIndex(endIndex)


다음은 범위(Range)로 문자열을 자르는 코드다.


let range = startIndex...endIndex

str.substringWithRange(range)



차라리!!!

다음과 같이 NSString 으로 변환해서 처리하는 게 더 간단하다.


(str as NSString).substringToIndex(5)

(str as NSString).substringWithRange(NSMakeRange(1, 5))



혹은

다음과 같이 String을 확장해서 사용하기도 한다.


extension String {

    subscript(range:Range<Int>) -> String {

        let start = advance(startIndex, range.startIndex, endIndex)

        let end = advance(startIndex, range.endIndex, endIndex)

        return self[start...end]

    }

}


str[1...4]

str[1..<3]

반응형