【问题标题】:How to compare whether a path is in same folder or not如何比较路径是否在同一个文件夹中
【发布时间】:2019-11-02 04:51:57
【问题描述】:

我想比较天气输入路径是否在同一个文件夹中

问题:输入路径是否在同一个文件夹中?

假设我当前的路径是f://learning/java

现在我在名为java 的文件夹中,无论path 直接属于java 我的函数 应该返回true

假设我有这么多路径:

  1. f://learning/java/first/
  2. f://learning/java/1.java
  3. f://learning/java/machine/learning
  4. f://learning/java/a/b
  5. f://learning/java/
  6. f://learning/f

我已经尝试过,如下所示:

function pathDirectlyBelongsToSameFoler(currentPath, incomingPath) {
  if (currentPath == incomingPath) return true;
  // other comparision code i don't know
}

var currentPath = 'f://learning/java';

console.log(pathDirectlyBelongsToSameFoler(currentPath, 'f://learning/java/first'));
console.log(pathDirectlyBelongsToSameFoler(currentPath, 'f://learning/java/1.java'));
console.log(pathDirectlyBelongsToSameFoler(currentPath, 'f://learning/java/machine/learning'));
console.log(pathDirectlyBelongsToSameFoler(currentPath, 'f://learning/java/a/b'));
console.log(pathDirectlyBelongsToSameFoler(currentPath, 'f://learning/java/'));
console.log(pathDirectlyBelongsToSameFoler(currentPath, 'f://learning/f'));

【问题讨论】:

    标签: javascript jquery node.js regex


    【解决方案1】:

    您可以构建动态正则表达式并针对传入路径进行测试

    function pathTester(currentPath, incomingPath) {
    if(incomingPath == currentPath) return true
      currentPath += currentPath.endsWith('/') ? '' : '/'
      let reg = new RegExp(String.raw `^${currentPath}[^\/]*\/?$`)
      return reg.test(incomingPath)
    }
    
    var currentPath = 'f://learning/java';
    
    console.log(pathTester(currentPath, 'f://learning/java/first'));
    console.log(pathTester(currentPath, 'f://learning/java/1.java'));
    console.log(pathTester(currentPath, 'f://learning/java/machine/learning'));
    console.log(pathTester(currentPath, 'f://learning/java/a/b'));
    console.log(pathTester(currentPath, 'f://learning/java/'));
    console.log(pathTester(currentPath, 'f://learning/f'));

    【讨论】:

    • 非常好的解决方案,非常感谢您的帮助,但是如果f://learning/Java/first,这个返回true注意: J在首都
    • @skBangalore let reg = new RegExp(`^${currentPath}[^/]*/?$`)
    • 正如@WiktorStribiżew 正确指出的那样,您只需留下i 标志
    猜你喜欢
    • 2022-11-02
    • 2017-09-26
    • 2011-09-06
    • 2017-06-30
    • 2022-10-06
    • 1970-01-01
    • 1970-01-01
    • 2018-09-14
    • 1970-01-01
    相关资源
    最近更新 更多