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

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

问题是,购物车还包括文本中的价格修饰语,每个产品的价格都可能不同。下面的代码可以工作。

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

我只想在选定的选项包含"Yes"字样时执行该动作,而忽略价格修饰语。

解决办法

像这样。

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

......或者你可以使用tilde运算符。

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

这样做是因为indexOf()返回-1,如果根本就没有找到这个字符串。

注意,这是对大小写敏感的。
如果你想进行不区分大小写的搜索,你可以这样写

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

或者。

if (/yes/i.test(str))
评论(12)

你可以使用搜索匹配来实现这一点。

str.search( 'Yes')

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

评论(10)

另一种方式。

var testStr = "This is a test";

if(testStr.contains("test")){
    alert("String Found");
}

在Firefox、Safari 6和Chrome 36上测试

评论(4)