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チャレンジ
簡単2行の入力が与えられます:
- 許可されたユーザー名のカンマ区切りリスト(例:
admin,user,guest,moderator) - チェックするユーザー名
ユーザー名が許可リストの中に存在するかどうかを確認してください。存在する場合は Access granted と出力し、存在しない場合は Access denied と出力してください。
ステップ:
- カンマ区切りのリストを読み込み、文字列の配列に分割します
- チェックするユーザー名を読み込みます
contains()メソッドを使用して、ユーザー名が許可リストに含まれているかどうかを判定します- 結果に基づいて適切なメッセージを出力します
ヒント: 文字列を配列に分割するには components(separatedBy:) を使用します。例:
let text = "a,b,c"
let parts = text.components(separatedBy: ",")チートシート
contains() メソッドは、特定の値が配列内に存在するかどうかを確認し、見つかった場合は true を、そうでない場合は false を返します。
let fruits = ["apple", "banana", "orange"]
if fruits.contains("banana") {
print("We have bananas!")
}
// 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")
}
// Valid choicecontains() メソッドは、文字列に対して部分文字列が含まれているかを確認するためにも使用できます:
let message = "Hello, Swift!"
print(message.contains("Swift")) // true文字列を配列に分割するには、components(separatedBy:) を使用します:
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. 結果に基づいて "Access granted" または "Access denied" を出力するこのレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。