テキストの置換と分割
正規表現の操作で文字列を変換します。
「テキストの置換と分割」は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フィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- 正規表現リテラルとマッチング
- キャプチャグループ
- RegexBuilder DSL
- テキストの置換と分割