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")) |
本厂
注意,这是案件敏感。如果你想要一个不区分大小写的搜索,你可以写
1 | if (str.toLowerCase().indexOf("yes") >= 0) |
或者,
1 | if (/yes/i.test(str)) |
你可以使用搜索或匹配。
将返回匹配的位置,或-1,如果它没有被发现。
另一种方式:
1 2 3 4 5 | var testStr ="This is a test"; if(testStr.contains("test")){ alert("String Found"); } |
*测试Firefox,Safari和Chrome 36×6
我的答案写在深夜,但我的思想(包括它无论如何。现在有一个
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 } |
退房的文档了解更多。
它可以用于这样的:
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罗短跑很有用。在这个个案,去检查
(注罗冲刺会议是图书馆_命名对象。不要忘记检查安装在同一个页面设置它为您的项目)。
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
另一种方式(
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助手方法