分割と結合
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をそのまま使えます。
チャレンジ
簡単入力から、カンマで区切られた単語のリストを1行読み取ります。
次の3行を出力します。
,で分割した後の単語の数- 単語を
>(スペース、greater-than、スペース)で再結合したもの(大文字) - リスト内で最も長い単語(分割後)。2つの単語の長さが同じ場合は、first に現れるものを使用します。
入力が red,green,blue の場合、出力は次のようになります。
3
RED > GREEN > BLUE
green自分で試してみよう
let line = readLine()!
let words = line.components(separatedBy: ",")
// TODO: 個数、" > " で結合して大文字化したもの、最初の最長の単語を出力
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
ロジックとフローのすべてのレッスン
自分で練習してみよう: Swiftプレイグラウンド