Menu
Coddy logo textTech

containsメソッド

CoddyのSwiftジャーニー「基礎」セクションの一部。レッスン 76/86。

配列を扱うときは、アクションを実行する前に、特定の値が存在するかどうかを確認する必要がよくあります。Swiftには、まさにこの目的のためのcontains()メソッドがあります。要素が見つかった場合はtrueを返し、それ以外の場合はfalseを返します。

let fruits = ["apple", "banana", "orange"]

if fruits.contains("banana") {
    print("We have bananas!")
}
// バナナがあります!

これは、配列を手動で検索するためにループを書くよりも、はるかにすっきりしています。このメソッドは、文字列、数値、その他の値のいずれを含む配列であっても、あらゆる型の配列で機能します。

let numbers = [10, 20, 30, 40, 50]

print(numbers.contains(30))  // true
print(numbers.contains(99))  // false

一般的な使用例は、ユーザー入力を許可された値のリストに対して検証することです。

let validOptions = ["yes", "no", "maybe"]
let userInput = "yes"

if validOptions.contains(userInput) {
    print("Valid choice")
} else {
    print("Invalid choice")
}
// 有効な選択

contains()メソッドは、より大きな文字列内に部分文字列が存在するかどうかを確認するために、文字列にも使用できます。

let message = "Hello, Swift!"
print(message.contains("Swift"))  // true
challenge icon

チャレンジ

簡単

2 行の入力を受け取ります:

  1. comma-separated の allowed usernames のリスト(例:admin,user,guest,moderator
  2. 確認する username

username が allowed リストに存在するか確認します。存在する場合は Access granted を Print します。存在しない場合は Access denied を Print します。

Steps:

  1. comma-separated のリストを Read し、strings の array に分割します
  2. 確認する username を Read します
  3. contains() method を使用して、username が allowed リストにあるかどうかを判断します
  4. result に基づいて適切な message を Print します

Hint: components(separatedBy:) を使用して、string を array に分割します。例:

let text = "a,b,c"
let parts = text.components(separatedBy: ",")

自分で試してみよう

// 許可されたユーザー名のカンマ区切りリストを読み取る
let allowedList = readLine()!

// チェックするユーザー名を読み取る
let username = readLine()!

// TODO: 以下にコードを書いてください
// 1. components(separatedBy:) を使って allowedList を配列に分割する
// 2. contains() を使って username が配列に含まれているかチェックする
// 3. Print "Access granted" or "Access denied" based on the result
quiz icon腕試し

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

基礎のすべてのレッスン

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