如何从 JavaScript 中的字符串修剪文件扩展名?

新手上路,请多包涵

例如,假设 x = filename.jpg ,我想获取 filename ,其中 filename 可以是任何文件名(我们假设文件名仅包含 [a-zA-Z0-9-_] 以简化。)。

我在 DZone Snippets 上看到 x.substring(0, x.indexOf('.jpg')) ,但 x.substring(0, x.length-4) 不会表现更好吗?因为, length 是一个属性并且不进行字符检查,而 indexOf() 是一个函数并且进行字符检查。

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

阅读 982
2 个回答

如果您知道扩展名的长度,则可以使用 x.slice(0, -4) (其中 4 是扩展名和点的三个字符)。

如果您不知道长度@John Hartsock 正则表达式 将是正确的方法。

如果您不想使用正则表达式,可以试试这个(性能较差):

 filename.split('.').slice(0, -1).join('.')

请注意,它会在没有扩展名的文件上失败。

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

不确定什么会执行得更快,但是当涉及扩展时这会更可靠 .jpeg.html

 x.replace(/\.[^/.]+$/, "")

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

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