【问题标题】:Javascript say if a folder is child of anotherJavascript说如果一个文件夹是另一个文件夹
【发布时间】:2023-03-30 11:56:01
【问题描述】:

我有这些字符串,它们是文件和文件夹的地址:

  1. ../../../folder1/sub1/sub12/
  2. ../../../folder1/
  3. ../../../another-folder/

我想使用 javascript(可能是 jquery)对它们进行比较,以查看例如字符串 1 是否有一部分与字符串 2 相同,但更多的是说字符串 1 是字符串 2 的子项。

我该怎么做?

【问题讨论】:

    标签: javascript jquery file tree directory


    【解决方案1】:

    你可以试试下面的方法

    var path1 = "../../../folder1/";
    var path2 = "../../../folder1/sub1/sub12/";
    
    if (path2.indexOf(path1) != -1){
     //path2 is a sub of path 1
    }
    

    【讨论】:

    • indexOf 可以返回 0 这是假的
    • @MatteoPagliazzi 当path2path1 开头时-那么起始索引为0
    【解决方案2】:

    您可以使用indexOf 方法来查找一个字符串是否是另一个字符串的一部分。

    来自w3schools documentation

    indexOf() 方法返回第一次出现的位置 字符串中的指定值。

    如果要搜索的值从未出现,则此方法返回 -1。

    var test = "../folder/subfolder1";
    var test2 = "../folder";
    if (test.indexOf(test2) !=-1) {
         alert(test + " is a subfolder of " + test2);
    }
    

    【讨论】:

      【解决方案3】:
      if(string1.indexOf(string2) != -1){
      //string2 is present in string1
      }
      else{
      //string2 is not present in string1
      }
      

      【讨论】:

        【解决方案4】:

        如果您的字符串还可以包含绝对路径或包含.. 的路径,我建议您检查.indexOf 是否返回0,而不是任何不是-1 的路径。

        它可以帮助处理类似的情况。

        var path1 = "/rootFolder/";
        var path2 = "../folder/rootFolder/";
        
        if (path2.indexOf(path1) === 0) {
          console.log("You want this");  // won't get executed => good
        }
        
        if (path2.indexOf(path1) !=-1) {
          console.log("You don't want this"); // will get executed => bad
        }
        

        【讨论】:

        • 请问可以举个indexof返回0的例子吗?
        • @MatteoPagliazzi 例如console.log("../folder/1".indexOf("../folder"));。当字符串正好位于另一个字符串的开头时,起始索引为 0,因此 indexOf 将返回 0
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-01-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多