文字列に部分文字列が含まれているかどうかを確認するにはどうすればよいですか? [重複] 質問する

文字列に部分文字列が含まれているかどうかを確認するにはどうすればよいですか? [重複] 質問する

ドロップダウン メニューに製品オプションを表示するショッピング カートがあり、「はい」を選択した場合に、ページ上の他のフィールドも表示されるようにしたいと考えています。

問題は、ショッピング カートのテキストに価格修飾子も含まれており、これが製品ごとに異なる可能性があることです。次のコードは機能します。

$(document).ready(function() {
    $('select[id="Engraving"]').change(function() {
        var str = $('select[id="Engraving"] option:selected').text();
        if (str == "Yes (+ $6.95)") {
            $('.engraving').show();
        } else {
            $('.engraving').hide();
        }
    });
});

しかし、私はむしろ次のようなものを使いたいのですが、これは機能しません:

$(document).ready(function() {
    $('select[id="Engraving"]').change(function() {
        var str = $('select[id="Engraving"] option:selected').text();
        if (str *= "Yes") {
            $('.engraving').show();
        } else {
            $('.engraving').hide();
        }
    });
});

選択したオプションに「はい」という単語が含まれている場合にのみアクションを実行し、価格修飾子は無視します。

ベストアンサー1

このような:

if (str.indexOf("Yes") >= 0)

...または、チルダ演算子を使用することもできます。

if (~str.indexOf("Yes"))

文字列がまったく見つからなかった場合にindexOf()が返されるため、これは機能します。-1

これは大文字と小文字を区別することに注意してください。
大文字と小文字を区別しない検索をしたい場合は、次のように記述します。

if (str.toLowerCase().indexOf("yes") >= 0)

または:

if (/yes/i.test(str))

後者は正規表現またはregexです。

正規表現の内訳:

  • /これは正規表現であることを示す
  • yes正規表現は、その文字を正確にその順序で検索することを意味します。
  • /正規表現を終了します
  • i正規表現を大文字小文字を区別するように設定する
  • .test(str)正規表現が一致するかどうかを判定します。str要約すると、変数内で大文字と小文字を区別せずに、文字y、、eをその正確な順序で見つけられるかどうかを確認します。sstr

おすすめ記事