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

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

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

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

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

1905830 次浏览

像这样:

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

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

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

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

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

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

或:

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

后者是正则表达式regex

正则表达式分解:

  • /表示这是一个正则表达式
  • yes意味着正则表达式将以确切的顺序找到这些确切的字符
  • /结束正则表达式
  • i将正则表达式设置为case-敏感
  • .test(str)确定正则表达式是否匹配str综上所述,这意味着它将查看是否可以在变量str
  • 中以不区分大小写的确切顺序找到字母yes

您可以为此使用搜索匹配

str.search( 'Yes' )

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

另一种方式:

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

**在Firefox、Safari6和Chrome36上测试**

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

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

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

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

因此,您可以在您的页面中的任何地方使用:

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

返回真正

请参阅下面的帖子以获取更多扩展助手方法。Javascript辅助方法

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

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

用法:

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

这就是jQuery如何做它的hasClass方法。

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

如果您能够使用库,您可能会发现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");

…你更喜欢哪一个。

ECMAScript 6引入了#0,以前称为contains

它可以像这样使用:

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

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

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

它可以多填充使其在旧浏览器上工作。

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

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

要检查子字符串,可以采用以下方法:

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

查看留档了解更多。

包含()方法确定是否可以在另一个字符串中找到一个字符串,并根据需要返回true或false。

语法:-string.includes(搜索字符串[,位置])

搜索字符串:-要在此字符串中搜索的字符串。

位置:-可选。在此字符串中开始搜索搜索字符串的位置;默认为0。

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

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

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