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

2020/09/18 19:01 · javascript ·  · 0评论

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

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

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

我只想在所选选项包含单词“是”的情况下执行操作,并且会忽略价格修饰符。

像这样:

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

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

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

之所以有效,是因为如果根本找不到该字符串,则indexOf()返回-1

请注意,这是区分大小写的。

如果您要进行不区分大小写的搜索,可以编写

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

要么:

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

您可以为此进行搜索匹配

str.search( 'Yes' )

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

现在写这个答案已经很晚了,但是我还是想把它包括在内。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
}

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

其他方式:

var testStr = "This is a test";

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

**在Firefox,Safari 6和Chrome 36上测试过**

ECMAScript 6引入了String.prototype.includes以前的名称contains

可以这样使用:

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

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

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

可以对其进行多填充以使其在旧的浏览器上运行。

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

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

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

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 

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

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

..您更喜欢的那个。

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

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

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

以上都不对我有用,因为那里有空格,但这是我所做的

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

        }
    }

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

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

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

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

返回true

请参阅下面的文章以获取更多扩展帮助程序方法。
JavaScript辅助方法

本文地址:http://javascript.askforanswer.com/ruhejianchazifuchuanshifoubaohanzizifuchuanzhongfu.html
文章标签: ,   ,   ,   ,  
版权声明:本文为原创文章,版权归 javascript 所有,欢迎分享本文,转载请保留出处!

文件下载

老薛主机终身7折优惠码boke112

上一篇:
下一篇:

评论已关闭!