在 Javascript 中需要一个 basename 函数

新手上路,请多包涵

我需要一个用于 Javascript 的短 basename 函数(单行代码?):

 basename("/a/folder/file.a.ext") -> "file.a"
basename("/a/folder/file.ext") -> "file"
basename("/a/folder/file") -> "file"

那应该去除路径和任何扩展名。

更新:对于开头的点,最好将其视为“特殊”文件

basename("/a/folder/.file.a.ext") -> ".file.a"
basename("/a/folder/.file.ext") -> ".file"
basename("/a/folder/.file") -> ".file" # empty is Ok
basename("/a/folder/.fil") -> ".fil"  # empty is Ok
basename("/a/folder/.file..a..") -> # does'nt matter

原文由 PeterMmm 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 844
2 个回答
function baseName(str)
{
   var base = new String(str).substring(str.lastIndexOf('/') + 1);
    if(base.lastIndexOf(".") != -1)
        base = base.substring(0, base.lastIndexOf("."));
   return base;
}

如果您可以将 /\ 作为分隔符,则必须更改代码以再添加一行

原文由 Nivas 发布,翻译遵循 CC BY-SA 3.0 许可协议

function basename(path) {
   return path.split('/').reverse()[0];
}

将路径分解为组件目录和文件名,然后返回最后一部分(文件名),这是数组的最后一个元素。

原文由 Tomo Huynh 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题