在javascript中比较另一个字符串中的子字符串

Comparing substring in another string in javascript

本文关键字:字符串 比较 javascript 另一个      更新时间:2024-02-22

我有两个字符串,我想检查下面一个变量到另一个变量的子字符串是否是代码片段。

var val1 = "www.google.com , www.yahoo.com , www.msn.com, in.news.yahoo.com";
    var val2 = "in.news.yahoo.com/huffington-post-removes-sonia-gandhi-rich-list-103404344.html";
//if val1 does not contains val2 I want to show popup. I tried val1 .toLowerCase().indexOf(val2 .toLowerCase()) but it doesn't work it always return -1.

有人能建议我如果有这种情况该怎么办吗?

试试这个:

var val1 = "www.google.com,www.yahoo.com,www.msn.com,in.news.yahoo.com";
var val2 = "www.yahoo.com/huffington-post-removes-sonia-gandhi-rich-list-103404344.html";
function check(){
    var val1_arr = val1.split(',');
    for(var i = 0; i < val1_arr.length; i++){
       if(val2.indexOf(val1_arr[i]) != -1){
         // val2 contains val1
           return true;
       }
    }
    return false;
}

试试这个:

val1 = [ "www.google.com",
         "www.yahoo.com",
         "www.msn.com",
         "in.news.yahoo.com" ];
function showPopUpIfUrlIsInVal1(val2) {
    var b = false;
    for (var i = 0; i < val1.length; i++)
    {
        if (val2.indexOf(val1[i]) > -1)
        {
            b = true;
            break;
        }
    }
    if (b)
    {
         alert("test message");
    }
}
showPopUpIfUrlIsInVal1("http://www.google.com");

啊,这是一个有趣的问题,这里有一个解决这个问题的FP方法:

var val1 = "www.google.com , www.yahoo.com , www.msn.com,in.news.yahoo.com";
var val2 = "in.news.yahoo.com/huffington-post-removes-sonia-gandhi-rich-list-103404344.html";
function arrayInString(needles, haystack, callback) {
    var result = needles.some(function(el) {
        return haystack.indexOf(el.trim()); // Trim is required to remove extra whitespace
    });
    if (result) callback();
}
arrayInString(val1.split(","), val2, function() {
    // Create your popup here
});

您可以使用Array.prototype.filter方法:

jsFiddle

   //fixing val1 format    
   var val1 = "www.google.com , www.yahoo.com , www.msn.com , in.news.yahoo.com";
    var matched = val1.split(' , ').filter(function (v) {
        return ~val2.indexOf(v);
    });