首页 文章

如何检查字符串是否包含子字符串? [重复]

提问于
浏览
874

这个问题在这里已有答案:

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

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

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

如果所选选项包含单词“是”,我只想执行操作,并忽略价格修饰符 .

13 回答

  • 26

    您可以在ie和chrome中使用此Polyfill

    if (!('contains' in String.prototype)) {
        String.prototype.contains = function (str, startIndex) {
            "use strict";
            return -1 !== String.prototype.indexOf.call(this, str, startIndex);
        };
    }
    
  • 10

    返回关键字包含在字符串中的次数 .

    var count = "I have one keyword".match(/keyword/g);
    var clean_count = !count ? false : count.length;
    
  • 113

    您可以使用searchmatch .

    str.search( 'Yes' )

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

  • 7

    写这个答案已经很晚了,但无论如何我想要包括它 . String.prototype 现在有一个方法 includes 可以检查子字符串 . 此方法区分大小写 .

    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
    }
    

    查看documentation以了解更多信息 .

  • 7

    您可以定义扩展方法并在以后使用它 .

    String.prototype.contains = function(it) 
    { 
       return this.indexOf(it) != -1; 
    };
    

    这样你就可以在任何地方使用你的页面:

    var str="hello how are you";
    str.contains("are");
    

    返回 true .

    有关更多扩展帮助方法,请参阅以下帖子 . Javascript helper methods

  • -1

    您还可以检查字符串中是否包含确切的单词 . 例如 . :

    function containsWord(haystack, needle) {
        return (" " + haystack + " ").indexOf(" " + needle + " ") !== -1;
    }
    

    用法:

    containsWord("red green blue", "red"); // true
    containsWord("red green blue", "green"); // true
    containsWord("red green blue", "blue"); // true
    containsWord("red green blue", "yellow"); // false
    

    这就是jQuery如何使用hasClass方法 .

  • 1924

    像这样:

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

    ...或者你可以使用代字号运算符:

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

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

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

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

    要么,

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

    ECMAScript 6引入了String.prototype.includes,以前名为 contains .

    它可以像这样使用:

    'foobar'.includes('foo'); // true
    'foobar'.includes('baz'); // false
    

    它还接受一个可选的第二个参数,它指定开始搜索的位置:

    'foobar'.includes('foo', 1); // false
    'foobar'.includes('bar', 1); // true
    

    它可以polyfilled使其适用于旧浏览器 .

  • 2

    我知道最好的办法是 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);
    
  • 0

    其他方式:

    var testStr = "This is a test";
    
    if(testStr.contains("test")){
        alert("String Found");
    }
    

    在Firefox,Safari 6和Chrome 36上测试

  • 4

    以上都没有为我工作,因为有空格但这就是我所做的

    tr = table.getElementsByTagName("tr");
    
        for (i = 0; i < tr.length; i++) {
            td = tr[i].getElementsByTagName("td")[0];
            bottab.style.display="none";
            bottab2.style.display="none";
            if (td) {
            var getvar=td.outerText.replace(/\s+/, "") ;
    
                if (getvar==filter){
                    tr[i].style.display = "";
                }else{
                    tr[i].style.display = "none";
                }
    
            }
        }
    
  • 1

    includes()方法确定是否可以在另一个字符串中找到一个字符串,并根据需要返回true或false . 语法:-string.includes(searchString [,position])searchString: - 要在此字符串中搜索的字符串 . 位置: - 可选 . 此字符串中开始搜索searchString的位置;默认为0 .

    string = 'LOL';
    console.log(string.includes('lol')); // returns false 
    console.log(string.includes('LOL')); // returns true
    
  • 24

    如果您能够使用库,您可能会发现Lo-Dash JS库非常有用 . 在这种情况下,请继续检查 _.contains() (从v4开始由 _.includes() 替换) .

    (注意Lo-Dash约定是命名库对象_ . 不要忘记在同一页面中检查安装以为项目设置它 . )

    _.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");
    

    ..哪一个你更喜欢 .

相关问题