Rubyでプログラミングをしています。

以下のような文字列の検索がしたいのですが、いまいちわかりません。
わかるかた、教えてください。

str_a = "東京、大阪、北海道、沖縄"
kensaku = "沖縄"

上記のように、str_a、kensakuとゆう変数があります。
str_aの中にkensakuにセットされている文字列があるかないかを調べたい。

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2010/05/24 20:05:45
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:koriki-kozou No.1

回答回数480ベストアンサー獲得回数79

ポイント60pt

index で文字列を検索させる例

str_a = "東京、大阪、北海道、沖縄"
kensaku = "沖縄"
if str_a.index(kensaku) then
    p "a"
else
    p "b"
end
kensaku = "愛知"
if str_a.index(kensaku) then
    p "a"
else
    p "b"
end
id:Ryo0524

ありがとうございます。できました。

2010/05/24 20:05:23

その他の回答1件)

id:koriki-kozou No.1

回答回数480ベストアンサー獲得回数79ここでベストアンサー

ポイント60pt

index で文字列を検索させる例

str_a = "東京、大阪、北海道、沖縄"
kensaku = "沖縄"
if str_a.index(kensaku) then
    p "a"
else
    p "b"
end
kensaku = "愛知"
if str_a.index(kensaku) then
    p "a"
else
    p "b"
end
id:Ryo0524

ありがとうございます。できました。

2010/05/24 20:05:23
id:iwadon No.2

回答回数60ベストアンサー獲得回数13

ポイント10pt

いくつか方法があると思いますが、正規表現を使った方法と、String#match を使った方法をご紹介します。

if /#{kensaku}/ =~ str_a
  puts("ある")
else
  puts("ない")
end

正規表現を使った場合、文字列が見つかったならば0以上の数が返ります。見つからなかったならばnilが返ります。

if str_a.match(kensaku)
  puts("ある")
else
  puts("ない")
end

Stringクラスのmatchメソッドを使った場合、文字列が見つかったならばMatchDataオブジェクトが返ります。見つからなかった場合はnilが返ります。

どちらの方法でもnilが帰ってきたら文字列が見つからなかったと判断して良いと思います。

instance method Regexp#===

instance method String#match

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません