Menu
Coddy logo textTech

문자열 분리 및 결합

Coddy Swift 여정의 로직 및 흐름 섹션에 포함된 레슨 — 56개 중 4번째.

구분된 텍스트를 작업하기 위한 두 가지 일상적인 도구입니다. 둘 다 이미 임포트된 Foundation에서 제공됩니다.

components(separatedBy:)는 전달한 구분 기호를 기준으로 문자열을 String 배열로 나눕니다:

let csv = "red,green,blue"
let parts = csv.components(separatedBy: ",")
print(parts)                       // ["red", "green", "blue"]

그 반대는 모든 [String]에서의 joined(separator:)입니다:

let words = ["swift", "is", "fun"]
let line = words.joined(separator: " ")
print(line)                        // "swift is fun"

이들을 조합하여 사용하는 경우가 많습니다. split으로 분리하고, map으로 변환한 다음, 다시 하나로 합칩니다. [String]에 대한 map의 결과는 여전히 [String]이므로 joined가 직접 작동합니다.

challenge icon

챌린지

쉬움

한 줄의 입력을 읽습니다: 쉼표로 구분된 단어 목록입니다.

세 줄을 출력합니다:

  1. ,를 기준으로 분리한 후의 단어 개수
  2. 대문자로 변환하고 > (공백, 크다 기호, 공백)로 다시 연결한 단어들
  3. 목록에서 가장 긴 단어 (분리 후). 두 단어의 길이가 같다면 가장 먼저 나타나는 단어를 사용합니다.

입력이 red,green,blue인 경우, 출력은 다음과 같습니다:

3
RED > GREEN > BLUE
green

치트 시트

components(separatedBy:)를 사용하여 문자열을 배열로 분리합니다:

let parts = "red,green,blue".components(separatedBy: ",")
// ["red", "green", "blue"]

joined(separator:)를 사용하여 문자열 배열을 다시 합칩니다:

let line = ["swift", "is", "fun"].joined(separator: " ")
// "swift is fun"

일반적인 패턴 — 분리, map을 이용한 변환, 다시 합치기:

let result = "red,green,blue"
    .components(separatedBy: ",")
    .map { $0.uppercased() }
    .joined(separator: " > ")
// "RED > GREEN > BLUE"

직접 해보기

let line = readLine()!
let words = line.components(separatedBy: ",")

// TODO: 개수, " > "로 연결된 대문자 문자열, 첫 번째로 가장 긴 단어 출력
quiz icon실력 점검

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

로직 및 흐름의 모든 레슨