🔥 문자열 접근 및 수정하기
Swift에서는 문자열의 메서드와 속성을 사용하거나 서브스크립트 문법을 사용하여 문자열에 접근하고 수정할 수 있습니다. 이번 글에서는 문자열을 다루는 다양한 방법에 대해 알아보겠습니다.
문자열 인덱스
Swift의 String
타입은 각 문자의 위치에 해당하는 연관 인덱스 타입인 String.Index
를 가지고 있습니다. 앞서 언급한 것처럼, 서로 다른 문자는 저장하는데 필요한 메모리 크기가 다를 수 있기 때문에, 특정 위치의 문자를 알아내려면 문자열의 시작 또는 끝에서부터 각 유니코드 스칼라를 순회해야 합니다. 이런 이유로 Swift의 문자열은 정수 값으로 인덱싱할 수 없습니다.
문자열의 첫 번째 문자의 위치에 접근하려면 startIndex
속성을 사용하면 됩니다. endIndex
속성은 문자열의 마지막 문자 다음 위치를 나타냅니다. 따라서 endIndex
속성은 문자열의 서브스크립트에 유효한 인자가 아닙니다. 만약 문자열이 비어있다면, startIndex
와 endIndex
는 같은 값을 가집니다.
주어진 인덱스의 이전과 이후 인덱스에 접근하려면 String
의 index(before:)
와 index(after:)
메서드를 사용하면 됩니다. 주어진 인덱스에서 더 멀리 떨어진 인덱스에 접근하려면, 이 메서드들을 여러 번 호출하는 대신 index(_:offsetBy:)
메서드를 사용할 수 있습니다.
서브스크립트 문법을 사용하여 특정 문자열 인덱스의 문자에 접근할 수 있습니다.
let greeting = "Guten Tag!" greeting[greeting.startIndex] // "G" greeting[greeting.index(before: greeting.endIndex)] // "!" greeting[greeting.index(after: greeting.startIndex)] // "u" let index = greeting.index(greeting.startIndex, offsetBy: 7) greeting[index] // "a"
swift
문자열의 범위를 벗어난 인덱스나 문자열의 범위를 벗어난 인덱스의 문자에 접근하려고 하면 런타임 에러가 발생합니다.
greeting[greeting.endIndex] // 에러 greeting.index(after: greeting.endIndex) // 에러
swift
indices
속성을 사용하여 문자열의 모든 문자 인덱스에 접근할 수 있습니다.
for index in greeting.indices { print("\(greeting[index]) ", terminator: "") } // "G u t e n T a g ! "를 출력합니다.
swift
삽입과 제거
지정된 인덱스에 단일 문자를 삽입하려면 insert(_:at:)
메서드를 사용하고, 지정된 인덱스에 다른 문자열의 내용을 삽입하려면 insert(contentsOf:at:)
메서드를 사용합니다.
var welcome = "hello" welcome.insert("!", at: welcome.endIndex) // welcome은 이제 "hello!" welcome.insert(contentsOf: " there", at: welcome.index(before: welcome.endIndex)) // welcome은 이제 "hello there!"
swift
지정된 인덱스에서 단일 문자를 제거하려면 remove(at:)
메서드를 사용하고, 지정된 범위의 부분 문자열을 제거하려면 removeSubrange(_:)
메서드를 사용합니다.
welcome.remove(at: welcome.index(before: welcome.endIndex)) // welcome은 이제 "hello there" let range = welcome.index(welcome.endIndex, offsetBy: -6)..<welcome.endIndex welcome.removeSubrange(range) // welcome은 이제 "hello"
swift
이렇게 문자열의 메서드와 속성을 활용하여 문자열을 쉽게 다룰 수 있습니다. 서브스크립트 문법과 indices
속성을 사용하면 문자열의 개별 문자에 편리하게 접근할 수 있죠. 또한 insert(_:at:)
, insert(contentsOf:at:)
, remove(at:)
, removeSubrange(_:)
메서드를 사용하여 문자열에 문자를 삽입하거나 제거할 수도 있습니다.
이렇게 Swift에서는 문자열을 다양한 방법으로 접근하고 수정할 수 있습니다. Swift가 제공하는 이런 다양한 기능들을 잘 활용한다면 문자열과 관련된 작업을 훨씬 더 수월하게 처리할 수 있을 거예요. 앞으로도 Swift 문자열을 다룰 때 오늘 배운 내용들을 잘 기억해 두시길 바랍니다!