콘텐츠로 건너뛰기
Home » 문자열을 쪼개기

문자열을 쪼개기

Swift – 문자열 자르기

문자열을 쪼개기

Swift 4에서의 변경

Swift 4에서 문자열은 그 자체로 시퀀스이고, 서브시퀀스에 접근하기 위해 characters 속성을 사용하지 않게 되었다. (characters 속성 자체가 제거되었다.). split(separator:)를 사용해서 문자열을 자른 결과는 Array<Substring> 타입으로 반환된다. Substring 타입 역시 StringProtocol을 따르고 있기 때문에, 다시 join(separator:)로 묶은 경우 최종 결과는 String이 될 수 있다.

let a = "12,34,56,78"
let xs = a.split(separator:",")
let b = xs.joined(separator:"+")
print(b)
// 12+34+56+78

참고로 split(separator:)에는 빈 문자열을 구분자로 넣을 수 없다. (구분자의 타입은 Character이다.) 따라서 개별 글자로 쪼개진 배열을 얻고 싶다면, unicodeScalars 프로퍼티를 이용한다. (이 스칼라 코드값을 사용하면 Character나 String을 만들 수 있다.)

let ys = a.unicodeScalars.map(String.init)
// ["1", "2", ",", "3", ... ]

Swift3 버전을 중심으로 업데이트.

Swift 문자열은 Collection 타입이 아니기때문에 문자열을 쪼개는 작업은 characters 속성을 이용해야 하는 것은 Swift2와 동일하다. 다만 API의 이름 변경 정책에 따라서 split(_:) 함수가 split(separator:)로 바뀌었다는 것 정도가 차이점이다.

let a = "12,34,56,78"
let xs = a.characters.split(separator:",").map{ String($0) }
let b = xs.joined(separator:"+")
print(b)
//12+34+56+78

  Swift 2.0 버전으로 업데이트 (2015-08-19)

기본적으로 Swift의 String 타입은 Foundation을 임포트하게되면 NSString과 거의 같은 API를 제공하기 때문에 아래와 같이   -componentsSeparatedByString: (Swift3에서는 components(separatedBy:)메소드를 써서 문자열을 분해할 수 있다.

let string = "Fizz Buzz Fizz Buzz FizzBuzz"
let separated = string.componentsSeparatedByString(" ")

하지만 이렇게 해서 얻은 결과는 [AnyObject] 이다. 만약 우리가 얻고자 하는 결과가 [String] 타입이라면 이를 다시 맵핑해야 한다. Foundation이 제공하는 API를 통해 잘라낸 배열은 [String] 타입이다.

더 보기 »Swift – 문자열 자르기