协慌网

登录 贡献 社区

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

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

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

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

这是有效的,因为如果根本找不到字符串, indexOf()将返回-1

请注意,这是区分大小写的。
如果您想要不区分大小写的搜索,可以编写

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");
}

** 在 Firefox,Safari 6 和 Chrome 36 上测试 **