Menu
Coddy logo textTech

부분 문자열 치환

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 패스를 수행하는 것이 좋습니다. 일상적인 작업에서는 체이닝된 치환이 괜찮으며 가독성도 명확합니다.

challenge icon

챌린지

초급

입력 한 줄을 읽습니다. 이것을 문장으로 취급하고 다음 단계에 따라 URL에 적합한 slug를 생성하세요:

  1. 입력을 소문자로 변환합니다
  2. 모든 공백을 -로 바꿉니다
  3. 모든 !, ?, 그리고 . 문자를 제거합니다

결과 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: 소문자로 변환, 공백을 하이픈으로 교체, !, ?, . 문자 제거
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

로직 및 흐름의 모든 레슨