关于javascript:如何检查字符串是否包含子字符串?

How do I check if string contains substring?

本问题已经有最佳答案,请猛点这里访问。

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

问题是,购物车在文本中还包含价格修改器,这对于每个产品都是不同的。以下代码有效:

1
2
3
4
5
6
7
8
9
10
$(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();
        }
    });
});

不过,我更愿意使用这种不起作用的方法:

1
2
3
4
5
6
7
8
9
10
$(document).ready(function() {
    $('select[id="Engraving"]').change(function() {
        var str = $('select[id="Engraving"] option:selected').text();
        if (str *="Yes") {
            $('.engraving').show();
        } else {
            $('.engraving').hide();
        }
    });
});

我只想在所选选项包含单词"是"时执行该操作,并且将忽略价格修改器。


这样的:

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

或你可以使用字符运算符:

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

本厂-1indexOf()归来,因为如果字符串不存在,在所有的。

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

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

或者,

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


你可以使用搜索或匹配。

str.search( 'Yes' )

将返回匹配的位置,或-1,如果它没有被发现。


另一种方式:

1
2
3
4
5
var testStr ="This is a test";

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

*测试Firefox,Safari和Chrome 36×6


我的答案写在深夜,但我的思想(包括它无论如何。现在有一个String.prototypeincludesCAN子法检查。本方法是区分大小写的。

1
2
3
var str = 'It was a good date';
console.log(str.includes('good')); // shows true
console.log(str.includes('Good')); // shows false

for a:检查,下面的方法可以采取:

1
2
3
if (mainString.toLowerCase().includes(substringToCheck.toLowerCase())) {
    // mainString contains substringToCheck
}

退房的文档了解更多。


String.prototype.includesECMAScript 6介绍,以前contains命名。

它可以用于这样的:

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

它是在接受第二的位置可选参数应该提醒:在开始搜索。

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

它可以使它的工作polyfilled老的浏览器。


数字时代的回报是关键字包含在字符串。

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


你可以使用这个polyfill在IE和Chrome

1
2
3
4
5
6
if (!('contains' in String.prototype)) {
    String.prototype.contains = function (str, startIndex) {
       "use strict";
        return -1 !== String.prototype.indexOf.call(this, str, startIndex);
    };
}


The includes() method determines whether one string may be found within another string, returning true or false as appropriate.

Syntax :-string.includes(searchString[, position])

searchString:-A string to be searched for within this string.

position:-Optional. The position in this string at which to begin searching for searchString; defaults to 0.

1
2
3
string = 'LOL';
console.log(string.includes('lol')); // returns false
console.log(string.includes('LOL')); // returns true


如果你能够使用的库,你会发现图书馆是JS罗短跑很有用。在这个个案,去检查_.contains()(replaced by _.includes()为V4的)。

(注罗冲刺会议是图书馆_命名对象。不要忘记检查安装在同一个页面设置它为您的项目)。

1
2
3
4
5
_.contains("foo","oo");     // → true
_.contains("foo","bar");    // → false
// Equivalent with:
_("foo").contains("oo");     // → true
_("foo").contains("bar");    // → false

在你的案例,去和使用:

1
2
3
_.contains(str,"Yes");
// or:
_(str).contains("Yes");

..whichever一个你更喜欢。


我知道,最好的方式是hayageek.com str.indexOf(s) !== -1;http:////JavaScript字符串包含

另一种方式(str.replace(s1,"") !== strI suggest):

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


所以,如果你可以检查精确的字是包含在一个字符串。例如:

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

用法:

1
2
3
4
containsWord("red green blue","red"); // true
containsWord("red green blue","green"); // true
containsWord("red green blue","blue"); // true
containsWord("red green blue","yellow"); // false

这是hasclass jQuery是其知识的方法。


上面没有为我工作附近的空白空间是什么,但这是我做的

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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
2
3
4
String.prototype.contains = function(it)
{
   return this.indexOf(it) != -1;
};

所以你可以使用任何在你的页状

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

它返回true。

参考下面的更多扩展后的辅助方法。JavaScript助手方法