获取文件名和父目录名的方法

时间:2019-03-08 18:41:28

标签: javascript node.js ecmascript-6

我正在构建一个基于react / redux的应用程序,并寻找一种最佳方法来获取父目录和文件名形式的url。 URL没有域名,因此它只有域名之后的路径,例如

/directory1/index.html?v=1.1
// need to get /directory1/index.html?v=1.1

directory1/directory2/dircetory3/index.html?v=1.1
// need to get directory2/index.html?v=1.1

/index.html?v=1.1
// need to get only index.html?v=1.1 as no parent directory is available
  

/immediateParentDirectory/filename.html

我尝试创建一个正则表达式,但是希望能够在重新发明轮子之前确认是否已经存在执行该操作的节点模块

2 个答案:

答案 0 :(得分:2)

您可以.split('/')上的斜杠字符/上的URL。然后.slice(-2)从拆分项目中获取最后2个项目。然后.join('/')将这两个项目一起加上一个斜杠。

function parentPath(url) {
  return url.split('/').slice(-2).join('/')
}

console.log(parentPath('/directory1/index.html?v=1.1'))    
console.log(parentPath('directory1/directory2/dircetory3/index.html?v=1.1'))    
console.log(parentPath('/index.html?v=1.1'))
console.log(parentPath('index.html?v=1.1'))

答案 1 :(得分:0)

您可以使用path.dirnamepath.basename

function doSomething(p) {
  const dir = path.dirname(p);
  // takes care of `foo` and `/foo`
  if (dir === '.' || dir === '/') {
    return p;
  }

  return path.basename(dir) + '/' + path.basename(p);
}

这假定您没有包含具有相对部分的路径,例如foo/bar/..baz/./foo

我不清楚您是否要使用前导/,但这也很容易通过选中result[0] === '/'来添加或删除。