如何从javascript中的字符串路径获取文件名?
这是我的代码
var nameString = "/app/base/controllers/filename.js"; //this is the input path string
在这里做一些事情只得到文件名
var name = ??? //this value should equal to filename.js
如何从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 组获取文件名