猿问

如何检查字符串是否包含子字符串?

我有一个购物车,在下拉菜单中显示产品选项,如果它们选择“是”,我想使页面上的其他一些字段可见。


问题是购物车的文本中还包含价格修饰符,每个产品的价格修饰符可能不同。以下代码有效:


$(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();

        }

    });

});

我只想在所选选项包含单词“是”的情况下执行操作,并且会忽略价格修饰符。


慕尼黑5688855
浏览 631回答 3
3回答

小怪兽爱吃肉

像这样:if (str.indexOf("Yes") >= 0)...或者您可以使用波浪号运算符:if (~str.indexOf("Yes"))之所以有效,是因为如果根本找不到该字符串,则indexOf()返回-1。请注意,这是区分大小写的。如果您要进行不区分大小写的搜索,可以编写if (str.toLowerCase().indexOf("yes") >= 0)要么,if (/yes/i.test(str))

呼啦一阵风

现在写这个答案已经很晚了,但我还是想把它包括在内。String.prototype现在有一个includes可以检查子字符串的方法。此方法区分大小写。var str = 'It was a good date';console.log(str.includes('good')); // shows trueconsole.log(str.includes('Good')); // shows false要检查子字符串,可以采用以下方法:if (mainString.toLowerCase().includes(substringToCheck.toLowerCase())) {    // mainString contains substringToCheck}查看文档以了解更多信息。

12345678_0001

ECMAScript 6引入了String.prototype.includes以前的名称contains。可以这样使用:'foobar'.includes('foo'); // true'foobar'.includes('baz'); // false它还接受一个可选的第二个参数,该参数指定开始搜索的位置:'foobar'.includes('foo', 1); // false'foobar'.includes('bar', 1); // true可以对其进行多填充以使其在旧的浏览器上运行。
随时随地看视频慕课网APP
我要回答