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

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

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

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

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

答案

if (str.indexOf("Yes") >= 0)
if (~str.indexOf("Yes"))
if (str.toLowerCase().indexOf("yes") >= 0)
if (/yes/i.test(str))

您可以为此进行搜索匹配

str.search( 'Yes' )

将返回匹配的位置,如果未找到则返回 - 1。

var testStr = "This is a test";

if(testStr.contains("test")){
    alert("String Found");
}
var str = 'It was a good date';
console.log(str.includes('good')); // shows true
console.log(str.includes('Good')); // shows false
if (mainString.toLowerCase().includes(substringToCheck.toLowerCase())) {
    // mainString contains substringToCheck
}
'foobar'.includes('foo'); // true
'foobar'.includes('baz'); // false
'foobar'.includes('foo', 1); // false
'foobar'.includes('bar', 1); // true
if (!('contains' in String.prototype)) {
    String.prototype.contains = function (str, startIndex) {
        "use strict";
        return -1 !== String.prototype.indexOf.call(this, str, startIndex);
    };
}
var count = "I have one keyword".match(/keyword/g);
var clean_count = !count ? false : count.length;
string = 'LOL';
console.log(string.includes('lol')); // returns false 
console.log(string.includes('LOL')); // returns true

我知道最好的方法是str.indexOf(s) !== -1; http://hayageek.com/javascript-string-contains/

我建议另一种方式( str.replace(s1, "") !== str ):

var str = "Hello World!", s1 = "ello", s2 = "elloo";
alert(str.replace(s1, "") !== str);
alert(str.replace(s2, "") !== str);

_.contains("foo", "oo");     // → true
_.contains("foo", "bar");    // → false
// Equivalent with:
_("foo").contains("oo");     // → true
_("foo").contains("bar");    // → false
_.contains(str, "Yes");
// or:
_(str).contains("Yes");