Javascript 如何有效地检查一个路径字符串是否是jQuery中另一个路径字符串的子级?

Javascript 如何有效地检查一个路径字符串是否是jQuery中另一个路径字符串的子级?,javascript,jquery,Javascript,Jquery,我想检查一个字符串路径是否是jQuery中另一个字符串路径的子路径。例如: var path1 = "\\192.168.30.102\Test Share\Discovery\New Discovery\F1\F10\F1"; var path2 = "\\192.168.30.102\Test Share\Discovery"; 在这种情况下,我应该得到正确的结果。例2: var path1 = "\\192.168.30.102\Test Share\Discovery123\New

我想检查一个字符串路径是否是jQuery中另一个字符串路径的子路径。例如:

var path1 = "\\192.168.30.102\Test Share\Discovery\New  Discovery\F1\F10\F1";
var path2 = "\\192.168.30.102\Test Share\Discovery";
在这种情况下,我应该得到正确的结果。例2:

var path1 = "\\192.168.30.102\Test Share\Discovery123\New  Discovery\F1\F10\F1";
var path2 = "\\192.168.30.102\Test Share\Discovery";
在这种情况下,我应该得到错误的结果。例3:

var path1 = "\\192.168.30.102\Test Share\Discovery\New  Discovery\F1\F10\F1";
var path2 = "\\192.168.30.102\Test Share\Discovery\";
在这种情况下,我应该得到正确的结果

我尝试了indexOf和search,在第二个和第三个示例中,它们都失败了。如果有多个单词或空格,这两种方法都会失败。下面是我尝试过的代码:

   var path1 = "\\192.168.30.102\Test Share\Discovery\New  Discovery\F1\F10\F1";
   var n = path1.indexOf("\\192.168.30.102\Test Share\Discovery\");

首先,您必须更改输入格式,如下所示。原因是\是转义字符,要将\放入字符串中,必须将其替换为\来转义\\

var path1 = "\\\\192.168.30.102\\Test Share\\Discovery\\New  Discovery\\F1\\F10\\F1";
var path2 = "\\\\192.168.30.102\\Test Share\\Discovery";
然后您可以使用以下函数

function isChildPath(parent, url){
    if(parent.indexOf(url) == 0){
        if (parent.charAt(url.length - 1) == "\\" || parent.charAt(url.length) == "\\")
            return true;
    }
    return false;
}
要检查path2是否为path1的子级

isChildPath(path1,path2);

如果您希望'n'为真或假>>var n=path1.indexOf\\192.168.30.102\Test Share\Discovery\>-1,如我所述,它在示例2和3中失败。这不仅仅是真的或假的,我希望能够以任何方式搜索路径。请尝试在>>var n=path1.indexOf\\192.168.30.102\Test Share\Discovery中删除indexOf条件开头和结尾的斜杠@webkit:我无法删除斜杠,因为我得到的路径是来自服务器的绝对路径。即使我从开头或结尾删除斜杠,中间的斜杠也无法删除,在第二种情况下,当最后一个单词有额外字符时,它会失败。我从服务器获取路径。由于\是转义字符,我无法将\替换为\\.@Saket如何获取从服务器到客户端的路径?通过ajax?您不能从服务器端更改服务器发送的字符串以匹配此格式吗?返回服务器路径的函数也被其他模块使用。因此,在服务器上更改字符串将影响其他模块。不能在不改变服务器端任何内容的情况下完成吗?