繁体   English   中英

如何在JavaScript中部分匹配这2个字符串

[英]How can I partially match these 2 strings in 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

例如elementUrl可能包含oogle.com,而elementurl包含google.com,我如何调整我的链接以支持此功能,例如oogl也可以匹配google.com。

思考?

老实说,我不明白您的问题,但是如果您尝试根据模式匹配字符串,则可以使用正则表达式。

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
}

正则表达式非常强大,您可以在Google上搜索有关此主题的大量教程。

杰克的想法似乎效果最好。 我可以像他建议的那样使用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) {

感谢您的所有答复。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM