2014-12-04 15 views
1

因此,为了使这个更容易提供某些变量的内容。我该如何部分匹配javascript中的这两个字符串

{{element url}} contains the string I want to compare (which is also an url) 
{{url}} Only contains my current url path 
{{ArrayObject}} contains a set similar to below 

function() { 
var data= [ 
{ url:  "ReplaceThis", 
elementUrl:  "ReplaceThis", 
category:  "ReplaceThis", 
action:  "ReplaceThis", 
label: "ReplaceThis", 
value : "ReplaceThis" 
    } 
]; 
    return data; 
} 

我遇到的代码是这样的代码。

function() { 
try{ 
    var elementurl = "{{element url}}"; 
    var url = "{{url}}"; 
    var arrObj = {{ArrayObject}}; 
    var check = false; 
    var ctr; 
    for (i = 0; i < arrObj .length; i++) { 
    if (elementurl.lastIndexOf(arrObj[i].elementUrl,0)===0 && url.lastIndexOf(arrObj[i].url, 0)===0) { 
    check = true; 
    ctr=i; 
}   
    } 
if (check == true){ 
return arrObj[ctr].action; 
}else{ 

return {{event}}; 
} 
}catch(err) { 
    return ; err.message; 
} 
} 

正如你可以看到,如果包含

(elementurl.lastIndexOf(arrObj[i].elementUrl,0)===0 && 

我试着用这个

if (elementurl.IndexOf(arrObj[i].elementUrl) != -1 && url.lastIndexOf(arrObj[i].url, 0)===0) { 

取代我已经试过几件事情,基本上就是我想要做的就是行arrObj [i] .elementUrl将包含一个部分元素,例如elementUrl可能包含oogle.com,但可能包含oogle.com但elementurl包含google.com我如何调整我的链接来支持这个或者像oogl这样的东西也可以和google.com匹配。

想法?

+0

'var arrObj = {{ArrayObject}};'...这是否甚至编译?! – 2014-12-04 04:04:20

+0

很难用它的所有'{{}}'大括号来表达。你在这里把模板语言语法和javascript混合在一起了吗 – charlietfl 2014-12-04 04:34:50

回答

1

说实话,我不明白你的问题,但如果你试图匹配基于模式的字符串,你可以使用正则表达式。

var url1 = 'http://www.google.com/something', 
    url2 = 'google.com'; 

if ((new RegExp(url2)).test(url1)){ 
    // google.com exists in http://www.google.com/something 
} 

if ((new RegExp(url1)).test(url2)){ 
    // this wont happen, http://www.google.com/something is no a part of google.com 
} 

正则表达式真的很强大,你可以做一个谷歌搜索这个主题的大量教程。

+0

不幸的是,它也会说“google.com”存在于“googleacom”中 – 2014-12-04 04:02:55

+0

您是否可以让其他用户知道为什么现在您提到它的点在正则表达式中以这种方式表现? – Juank 2014-12-04 04:09:07

+1

我不妨问你为什么不简单地使用'String.indexOf()',这将完全避免这个问题。 – 2014-12-04 04:12:34

0

杰克的想法似乎工作得最好。我可以使用像他建议的indexof很好地部分匹配。我做了确切的变化是

if (elementurl.lastIndexOf(arrObj[i].elementUrl,0)===0 && url.lastIndexOf(arrObj[i].url, 0)===0) { 

if (elementurl.indexOf(arrObj[i].elementUrl) > -1 && url.lastIndexOf(arrObj[i].url, 0)===0) { 

感谢您对所有的答复。