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

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/11805662/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-24 07:10:01  来源:igfitidea点击:

Get filename from string path in javascript?

javascriptregexstring

提问by 001

How to get the filename from string-path in javascript?

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

Here is my code

这是我的代码

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

do something here to get only the filename

在这里做一些事情来只获取文件名

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

回答by levi

Try this:

尝试这个:

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

回答by Brandon

I don't know why you'd want to us a regex to do this. Surely the following would be sufficient:

我不知道你为什么要给我们一个正则表达式来做到这一点。当然,以下内容就足够了:

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

回答by godspeedlee

a pure regex solution: \/([^\\\/:*?\"<>|]+)$
you will get file name from group 1

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

回答by joseluisq

Here one more detailed solution using Regular Expressions.

这是使用正则表达式的更详细的解决方案。

Alternative 1 (generic):Get a file name (whatever) from a string path.

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

const FILE_NAME_REGEX = /(.+)\/(.+)$/

console.log("/home/username/my-package/my-file1.ts".replace(FILE_NAME_REGEX, ''))

console.log("/home/username/my-package/my-file2.js".replace(FILE_NAME_REGEX, ''))

Alternative 2 (advanced):Get onlya .tsfile name from a string path.

方案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, ''))

// b. Otherwise it will return the complete path
console.log(JS_PATH.replace(TS_REGEX, ''))

Note:Additionally you can test first the regular expressions above in order to validate them before to getting the expected value.

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

TS_REGEX.test(TS_PATH)
// > true

TS_REGEX.test(JS_PATH)
// > false

More information at MDN - Regular Expressions

MDN 上的更多信息- 正则表达式