如何从javascript中的string-path获取文件名?
这是我的代码
var nameString = "/app/base/controllers/filename.js"; //this is the input path string
在此处执行操作以仅获取文件名
var name = ??? //this value should equal to filename.js
答案 0 :(得分:88)
试试这个:
var nameString = "/app/base/controllers/filename.js";
var filename = nameString.split("/").pop();
答案 1 :(得分:6)
我不知道你为什么要我们这样做的正则表达式。当然,以下就足够了:
var nameString = "/app/base/controllers/filename.js";
var nameArray = nameString.split('/');
var name = nameArray[nameArray.length - 1];
答案 2 :(得分:0)
纯正则表达式解决方案:\/([^\\\/:*?\"<>|]+)$
你将从第1组获得文件名
答案 3 :(得分:0)
这里是使用正则表达式的一种更详细的解决方案。
替代1(通用)::从字符串路径获取文件名(任何)。
const FILE_NAME_REGEX = /(.+)\/(.+)$/
"/home/username/my-package/my-file1.ts".replace(FILE_NAME_REGEX, '$2')
// > "my-file1.ts"
"/home/username/my-package/my-file2.js".replace(FILE_NAME_REGEX, '$2')
// > "my-file2.js"
替代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
TS_PATH.replace(TS_REGEX, '$2')
// > "my-file.spec.ts"
// b. Otherwise it will return the complete path
JS_PATH.replace(TS_REGEX, '$2')
// > "/home/username/my-package/my-file.spec.js"
注意:此外,您可以首先测试上述正则表达式,以便对其进行验证,然后才能获得期望值。
TS_REGEX.test(TS_PATH)
// > true
TS_REGEX.test(JS_PATH)
// > false
更多信息,请访问MDN - Regular Expressions