Swift 文字列 置換・検索の実用テクニック(replacing/contains)を初心者向けに解説
生徒
「Swiftで文章の中の単語を別の言葉に置き換えたり、ある単語が含まれているか調べたりできますか?」
先生
「はい、できますよ。SwiftではreplacingOccurrencesで文字列を置換したり、containsで検索できます。アプリ開発ではとてもよく使う基本テクニックです。」
生徒
「なるほど!例えば文章の中の単語を一括で置き換えたり、禁止ワードが入っているか確認するみたいなことができるんですね。」
先生
「その通りです。ではSwiftの置換と検索の具体的な使い方を見ていきましょう!」
1. 文字列の置換(replacingOccurrences)
Swiftで文字列を置き換えるには、replacingOccurrences(of:with:)メソッドを使います。このメソッドは指定した文字列を別の文字列に変換して新しい文字列を返します。
let text = "私はJavaが好きです"
let newText = text.replacingOccurrences(of: "Java", with: "Swift")
print(newText)
私はSwiftが好きです
この例では「Java」を「Swift」に置き換えました。実際の開発では文章をユーザーに合わせて変えたいときやデータ変換に使えます。
2. 全ての一致を置換する
replacingOccurrencesは文字列に含まれるすべての一致箇所を置き換えます。例えば「バナナ」という文字が複数出てくる文章をすべて「リンゴ」に置換することも可能です。
let sentence = "バナナは黄色い。バナナは甘い。"
let result = sentence.replacingOccurrences(of: "バナナ", with: "リンゴ")
print(result)
リンゴは黄色い。リンゴは甘い。
すべての一致をまとめて置換できるので、テキスト編集やデータ処理に便利です。
3. 特定の条件に基づいて置換
置換にはオプションを指定することもできます。例えば大文字と小文字を区別せずに検索したい場合は、.caseInsensitiveというオプションを使います。
let text = "Hello Swift. hello swift."
let result = text.replacingOccurrences(of: "hello", with: "Hi", options: .caseInsensitive)
print(result)
Hi Swift. Hi swift.
このようにオプションを付けることで、検索条件を柔軟に変えることができます。
4. 文字列の検索(contains)
ある文字列の中に特定の単語が含まれているかどうか調べたいときはcontainsを使います。結果はtrue(含まれている)かfalse(含まれていない)で返されます。
let text = "今日はSwiftを勉強します"
print(text.contains("Swift"))
print(text.contains("Java"))
true
false
「Swift」が含まれている場合はtrueとなり、「Java」が含まれていないのでfalseになります。
5. 部分一致と完全一致の違い
containsは部分一致を判定します。つまり文章にその単語が一部でも含まれていればtrueになります。完全一致を確認したい場合は比較演算子(==)を使います。
let word = "Swift"
print(word.contains("Swi")) // 部分一致
print(word == "Swift") // 完全一致
true
true
場面に応じて「部分一致」と「完全一致」を使い分けることが重要です。
6. 複数のキーワードをチェックする
禁止ワードチェックなどでは、複数の単語が含まれているかを調べたい場合があります。そんなときはcontainsと繰り返し処理を組み合わせて確認できます。
let text = "この文章には禁止ワードがあります"
let ngWords = ["禁止", "NG", "ダメ"]
for word in ngWords {
if text.contains(word) {
print("禁止ワード: \(word) が含まれています")
}
}
禁止ワード: 禁止 が含まれています
このように複数の単語をまとめてチェックすることで、入力の検証やセキュリティ対策に役立ちます。
7. 実用例:メールアドレスの形式を簡単に確認
containsを応用すると、入力された文字列がメールアドレスらしいかどうか簡単に判定することもできます。例えば「@」が入っているか確認するだけでも最低限のチェックになります。
let email = "user@example.com"
if email.contains("@") {
print("メールアドレス形式の可能性があります")
}
メールアドレス形式の可能性があります
実際のアプリではさらに厳密なチェックが必要ですが、初心者が理解するにはこのような例がわかりやすいです。
8. 置換と検索の使い分け
最後に、文字列の置換と検索の使い分けを整理しておきましょう。
- 文字列を変えたいとき →
replacingOccurrences - 文字列に含まれているか調べたいとき →
contains
これらを組み合わせると、文章編集やデータ処理の幅が広がります。例えば禁止ワードが含まれていたら置換で「***」に変えるといった応用も可能です。