简体   繁体   English

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

[英]Get filename from string path in javascript?

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

Try this:试试这个:

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

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];

Here one more detailed solution using Regular Expressions .这是使用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, '$2')) console.log("/home/username/my-package/my-file2.js".replace(FILE_NAME_REGEX, '$2'))

Alternative 2 (advanced): Get only a .ts file 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 = /(.+)\/([az.-]+\.(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'))

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 - 正则表达式

a pure regex solution: \/([^\\\/:*?\"<>|]+)$纯正则表达式解决方案: \/([^\\\/:*?\"<>|]+)$
you will get file name from group 1您将从第 1 组获得文件名

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM