부분 문자열 치환
Coddy Swift 여정의 로직 및 흐름 섹션에 포함된 레슨 — 56개 중 5번째.
replacingOccurrences(of:with:)는 하나의 부분 문자열이 다른 문자열로 대체된 모든 일치 항목을 포함하는 새로운 문자열을 반환합니다:
let phone = "555-123-4567"
let digits = phone.replacingOccurrences(of: "-", with: "")
print(digits) // "5551234567"대소문자 변환 메서드들과 마찬가지로, 이 메서드는 새로운 String을 반환하며 원본은 수정되지 않습니다. 여러 패턴을 제거해야 할 경우 다음과 같이 호출을 체이닝하십시오:
let messy = " 555-123 4567 "
let clean = messy
.replacingOccurrences(of: "-", with: "")
.replacingOccurrences(of: " ", with: "")
print(clean) // "5551234567"두 번의 치환은 문자열을 두 번 훑는다는 것을 의미합니다. 거대한 문자열을 다루는 성능에 민감한 코드의 경우, 문자들에 대해 단일 filter 패스를 수행하는 것이 좋습니다. 일상적인 작업에서는 체이닝된 치환이 괜찮으며 가독성도 명확합니다.
챌린지
초급입력 한 줄을 읽습니다. 이것을 문장으로 취급하고 다음 단계에 따라 URL에 적합한 slug를 생성하세요:
- 입력을 소문자로 변환합니다
- 모든 공백을
-로 바꿉니다 - 모든
!,?, 그리고.문자를 제거합니다
결과 slug를 출력합니다.
입력 Hello World!에 대해, 출력은 hello-world입니다. Is Swift Fun?에 대해, 출력은 is-swift-fun입니다.
치트 시트
replacingOccurrences(of:with:)는 모든 일치하는 항목이 교체된 새로운 문자열을 반환합니다:
let digits = "555-123-4567".replacingOccurrences(of: "-", with: "")
// "5551234567"여러 패턴을 처리하기 위해 호출을 체이닝합니다:
let clean = "555-123 4567"
.replacingOccurrences(of: "-", with: "")
.replacingOccurrences(of: " ", with: "")직접 해보기
let line = readLine()!
// TODO: 소문자로 변환, 공백을 하이픈으로 교체, !, ?, . 문자 제거
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.