【问题标题】:best way to remove file extension [duplicate]删除文件扩展名的最佳方法[重复]
【发布时间】:2014-01-03 10:55:24
【问题描述】:

删除文件扩展名的最短方法是什么?这是我尝试过的:

file = "/home/usr/my_file.xml"
file = File.basename(file)
file.slice! File.extname(file)   #=> my_file

【问题讨论】:

  • 那个答案是给c#
  • 这不是一个重复的问题!它要求在保留路径的同时切断扩展,而另一个问题需要摆脱扩展和路径。
  • @AsfandQazi 这个例子只给出了文件名,不过 (#=> my_file)。

标签: ruby filenames file-extension


【解决方案1】:

阅读File::basename的文档:

basename(file_name [, suffix] ) → base_name

返回 file_name 中给出的文件名的最后一个组成部分,当 File::ALT_SEPARATOR 不为 nil 时,可以使用 File::SEPARATOR 和 File::ALT_SEPARETOR 作为分隔符来形成该组成部分。 如果 suffix 给出并出现在 file_name 的末尾,则将其删除。

file = "/home/usr/my_file.xml"
File.basename(file,File.extname(file)) # => "my_file"

【讨论】:

  • 有没有办法实现相同的目标但保留路径? #=> /home/usr/my_file
  • @zml 没有直接的方法。但是File.join(File.dirname("file/path"), File.basename('file/path', '.*'))
  • path[0..-(File.extname(path).length + 1)]
  • 另一种方式:file.sub(/#{File.extname(file)}$/, '')
  • 你可以这样做:file.sub(/\.[^.\/]*\Z/, '') 来砍掉扩展。它适用于 /foo/bar/baz 之类的路径。和 /foo/bar.baz/quux 也是如此。
猜你喜欢
  • 1970-01-01
  • 2011-11-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-16
  • 1970-01-01
  • 2014-09-19
  • 2014-12-25
相关资源
最近更新 更多