Menu
Coddy logo textTech

分割と結合

CoddyのSwiftジャーニー「ロジックとフロー」セクションの一部。レッスン 4/56。

区切りテキストを扱うための、日常的に使える2つのツールです。どちらも、すでにインポートされている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"

これらを組み合わせることがよくあります。分割し、mapで変換し、もう一度結合します。[String]に対するmapの結果も[String]なので、joinedをそのまま使えます。

challenge icon

チャレンジ

簡単

入力から、カンマで区切られた単語のリストを1行読み取ります。

次の3行を出力します。

  1. , で分割した後の単語の数
  2. 単語を > (スペース、greater-than、スペース)で再結合したもの(大文字
  3. リスト内で最も長い単語(分割後)。2つの単語の長さが同じ場合は、first に現れるものを使用します。

入力が red,green,blue の場合、出力は次のようになります。

3
RED > GREEN > BLUE
green

自分で試してみよう

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

// TODO: 個数、" > " で結合して大文字化したもの、最初の最長の単語を出力
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

ロジックとフローのすべてのレッスン

自分で練習してみよう: Swiftプレイグラウンド