从javascript中的字符串路径获取文件名

Get filename from string path in javascript?

本文关键字:路径 获取 文件名 字符串 javascript      更新时间:2023-09-26

如何从javascript中的字符串路径中获取文件名?

这是我的代码

var nameString = "/app/base/controllers/filename.js"; //this is the input path string

在这里做点什么只获取文件名

var name = ???   //this value should equal to filename.js

试试这个:

   var nameString = "/app/base/controllers/filename.js";
   var filename = nameString.split("/").pop();

我不知道你为什么要用正则表达式来实现这一点。当然,以下内容就足够了:

var nameString = "/app/base/controllers/filename.js";
var nameArray = nameString.split('/');
var name = nameArray[nameArray.length - 1];

这里有一个使用正则表达式的更详细的解决方案。

备选方案1(通用):从字符串路径中获取文件名(随便)。

const FILE_NAME_REGEX = /(.+)'/(.+)$/
console.log("/home/username/my-package/my-file1.ts".replace(FILE_NAME_REGEX, '$2'))
console.log("/home/username/my-package/my-file2.js".replace(FILE_NAME_REGEX, '$2'))

备选方案2(高级):从字符串路径中仅获取.ts文件名。

const JS_PATH = "/home/username/my-package/my-file.spec.js"
const TS_PATH = "/home/username/my-package/my-file.spec.ts"
// RegExp accepts only `.ts` file names in lower case with optional dashes and dots
const TS_REGEX = /(.+)'/([a-z.-]+'.(ts))$/
// a. Get only the file name of a `.ts` path
console.log(TS_PATH.replace(TS_REGEX, '$2'))
// b. Otherwise it will return the complete path
console.log(JS_PATH.replace(TS_REGEX, '$2'))

注意:此外,您可以先测试上面的正则表达式,以便在获得预期值之前对其进行验证。

TS_REGEX.test(TS_PATH)
// > true
TS_REGEX.test(JS_PATH)
// > false

更多信息,请访问MDN-正则表达式

纯正则表达式解决方案:'/([^'''/:*?'"<>|]+)$
您将从组1 中获得文件名