如何检查string是否包含子string?

我有一个在下拉菜单中显示产品选项的购物车,并且如果在上一个选项中select“是”,我只想在页面上显示其他字段。 问题在于,购物车在文本中还包含价格修饰符,并且对于每个产品可能会有所不同。 所以如果我这样做的话:

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

哪个不行

我只想执行操作,如果select的选项包含单词“是”,并将忽略价格修改。

我感谢任何帮助。

喜欢这个:

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

…或者你可以使用波形符号运算符:

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

这是有效的,因为indexOf()返回-1如果根本没有findstring。

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

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

要么,

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

你可以使用search或匹配 。

str.search( 'Yes' )

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

其他方式:

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

**testingFirefox,Safari 6和Chrome 36 **

写这个答案已经很晚了,但是我想无论如何都要包括它。 现在String.prototype有一个可以检查子string的方法。 这种方法是区分大小写的。

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

要检查子string,可以采取以下方法:

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

查看文档以了解更多信息。

你可以在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); }; } 

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

它可以像这样使用:

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

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

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

它可以被polyfilled ,使其在旧的浏览器上工作。

返回关键字包含在string中的次数。

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

我知道最好的方法是str.indexOf(s) !== -1; http://hayageek.com/javascript-string-contains/

我build议另一种方式( str.replace(s1, "") !== str ):

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

您还可以检查确切的单词是否包含在一个string中。 例如:

 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方法。

includes()方法确定是否可以在另一个string中find一个string,并根据需要返回true或false。

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

searchString:在此string中search的string。

位置: – 可选。 在此string中开始searchsearchString的位置; 默认为0。

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

如果你有能力使用库,你可能会发现Lo-Dash JS库非常有用。 在这种情况下,请继续检查_.contains() (由v4中的_.contains()替代)。

(注意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"); 

..哪一个你更喜欢。

你可以定义一个扩展方法并在以后使用它。

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

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

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

这返回true

请参阅以下文章以获取更多的扩展帮助器方法 Javascript辅助方法

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

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