【问题标题】:Get filename from string path in javascript?从javascript中的字符串路径获取文件名?
【发布时间】:2012-08-04 03:25:36
【问题描述】:

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

这是我的代码

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

在这里做一些事情只得到文件名

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

【问题讨论】:

标签: javascript regex string


【解决方案1】:

试试这个:

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

【讨论】:

  • 很高兴看到一个简单的非正则表达式答案。
  • -1 参数不是必需的(实际上被忽略了)。 developer.mozilla.org/en-US/docs/JavaScript/Reference/…
  • 如果字符串是"/app/base/controllers"怎么办?
  • @javiniar.leonard 你会得到“控制器”
  • @Coluhuru 你需要使用正则表达式
【解决方案2】:

我不知道您为什么要我们使用正则表达式来执行此操作。当然,以下内容就足够了:

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

【讨论】:

  • 可以想象使用正则表达式,但我同意你的看法。虽然正则表达式可能有助于解析错误的路径。
  • 这确实应该是答案,更灵活。
【解决方案3】:

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

备选方案 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 - Regular Expressions

【讨论】:

    【解决方案4】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-04-14
      • 2010-11-09
      • 2012-06-24
      • 1970-01-01
      • 2011-02-01
      • 1970-01-01
      • 2023-04-03
      相关资源
      最近更新 更多