Swift Academy · レッスン

テキストの置換と分割

正規表現の操作で文字列を変換します。

レッスン 4/413 ステップ

「テキストの置換と分割」はCoddyKit上の無料Swift Academyレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはSwift Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Swift Academyコースには全4レッスンが含まれています。

置換と分割

正規表現はマッチングだけに使うものではありません。Swift の文字列では、マッチしたテキストを置換したり、パターンで分割したりできるため、手作業のループなしで文字列を変換できます。

replacing(_:with:)

replacing(_:with:) は新しい文字列を返します。そこでは、パターンにマッチしたすべての部分が置換テキストに置き換えられます。

let s = "a1b2c3"
let cleaned = s.replacing(/\d/, with: "*")
print(cleaned)

単語全体の置換

パターンには任意の正規表現を指定できるため、数字が連続する部分をすべて 1 つの置換文字列で一度に置き換えられます。

let s = "order 1234 done"
let masked = s.replacing(/\d+/, with: "#")
print(masked)

replace による変更

replace(_:with:) はコピーを返すのではなく、var の文字列をその場で変更します。

var text = "hello world"
text.replace(/o/, with: "0")
print(text)

クロージャによる置換

replacing(_:with:) のクロージャ形式は各マッチ結果を受け取り、置換後の値を返します。これにより、計算による置換が可能になります。

let s = "a1 b2 c3"
let result = s.replacing(/\d+/) { match in
    String((Int(match.0) ?? 0) * 10)
}
print(result)

置換でのキャプチャの使用

クロージャ内では、マッチ結果からキャプチャグループを読み取り、置換テキストを組み立てられます。

let s = "2024-05"
let out = s.replacing(/(\d+)-(\d+)/) { m in
    "\(m.2)/\(m.1)"
}
print(out)

split(separator:)

文字列は正規表現を使った split(separator:) に対応しており、パターンにマッチする箇所で文字列を分割できます。

let csv = "a,b;c,d"
let parts = csv.split(separator: /[,;]/)
print(parts)

空白文字での分割

よくある処理として、/\s+/ を使い、連続する空白文字の箇所で文字列を単語に分割できます。

let line = "the   quick  brown"
let words = line.split(separator: /\s+/)
print(words.count)
print(words)

分割数の制限

maxSplits パラメーターで分割回数の上限を指定し、残りの部分をそのまま保持できます。

let s = "a-b-c-d"
let parts = s.split(separator: /-/, maxSplits: 1)
print(parts)

トリミングと置換

処理を組み合わせることもできます。不要なパターンを置換してから分割することで、パイプライン形式で入力を整形し、トークン化できます。

let raw = "  one,, two ,,three "
let cleaned = raw.replacing(/,+/, with: ",")
let items = cleaned.split(separator: ",").map { $0.trimmingCharacters(in: .whitespaces) }
print(items)

replacing と replacingOccurrences の比較

正規表現の replacing はパターンを処理します。一方、従来の replacingOccurrences(of:with:) はリテラルの部分文字列のみを処理します。パターンに基づく編集には、正規表現形式を使用してください。

let s = "cat hat bat"
print(s.replacing(/[ch]at/, with: "X"))

クイックチェック

"a1b2".replacing(/\d/, with: "-") の結果は何ですか?

まとめ

replacing(_:with:)(文字列形式またはクロージャ形式)と、その場で変更する replace を使ってマッチ結果を置換できます。また、split(separator:) と maxSplits を使って、正規表現で文字列を分割できます。これらにより、正規表現をテキスト変換のための包括的なツールキットとして利用できます。

無料で開始

AI チューターと学ぶ Swift — 無料

ブラウザでリアルコードを書いて実行し、24/7 の AI チューターから瞬時にサポートを受け、ウェブまたはアプリで続きから学習できます。

コース
122
レッスン
409

よくある質問

「テキストの置換と分割」レッスンは無料ですか?

はい。「テキストの置換と分割」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Swift Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Swift Academyコースには全4レッスンが含まれています。

「テキストの置換と分割」で何を学びますか?

正規表現の操作で文字列を変換します。 ブラウザで直接実行するハンズオンコードでSwift Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Swift Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのSwift Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。

「テキストの置換と分割」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このSwift Academyレッスンでコードを書いて実行できますか?

はい。すべてのSwift Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. 正規表現リテラルとマッチング
  2. キャプチャグループ
  3. RegexBuilder DSL
  4. テキストの置換と分割
← Swift Academyに戻る