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

2022-08-29 22:06:14

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

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

$(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”时才执行该操作,并且会忽略价格修饰符。


答案 1

喜欢这个:

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

...或者您可以使用波浪号运算符:

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

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

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

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

艺术

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

后者是正则表达式正则表达式

正则表达式细分:

  • /指示这是一个正则表达式
  • yes意味着正则表达式将按该确切顺序查找这些确切的字符
  • /结束正则表达式
  • i将正则表达式设置为区分大小
  • .test(str)确定正则表达式是否匹配 要对它进行求和,这意味着它将查看它是否可以找到字母 , ,并且按照该确切的顺序,不区分大小写,在变量中stryesstr

答案 2

您可以使用搜索匹配

str.search( 'Yes' )

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