How to removes all extensions from a filename in Ruby

3 Answers

0 votes
# Removes the last file extension from a filename or path.

# Removes all extensions from a filename. (Handling Multiple Extensions)
#
# Example:
#   archive.tar.gz -> archive
def remove_all_extensions(file_path)
  file_path.sub(/\..*$/, "")
end

# Example usage
puts remove_all_extensions("document.pdf")
puts remove_all_extensions("archive.tar.gz")
puts remove_all_extensions("/tmp/file.txt")
puts remove_all_extensions("/tmp/report.pdf")
puts remove_all_extensions("README")



# run:
#
# document
# archive
# /tmp/file
# /tmp/report
# README
#

 



answered 1 day ago by avibootz
0 votes
# Removes the last file extension from a filename or path.

# Removes all extensions from a filename or path.
#
# Examples:
#   archive.tar.gz     -> archive
#   /tmp/archive.tar.gz -> /tmp/archive
def remove_all_extensions(file_path)
  dir  = File.dirname(file_path)
  name = File.basename(file_path).sub(/\..*$/, '')

  dir == '.' ? name : File.join(dir, name)
end

# Example usage
puts remove_all_extensions("document.pdf")
puts remove_all_extensions("archive.tar.gz")
puts remove_all_extensions("/tmp/file.txt")
puts remove_all_extensions("/tmp/report.pdf")
puts remove_all_extensions("README")



# run:
#
# document
# archive
# /tmp/file
# /tmp/report
# README
#

 



answered 1 day ago by avibootz
0 votes
# Removes the last file extension from a filename or path.

# Removes all extensions from a filename.
def remove_all_extensions(file_path)
  result = file_path.dup

  result = result.delete_suffix(File.extname(result)) until File.extname(result).empty?

  result
end


# Example usage
puts remove_all_extensions("document.pdf")
puts remove_all_extensions("archive.tar.gz")
puts remove_all_extensions("/tmp/file.txt")
puts remove_all_extensions("/tmp/report.pdf")
puts remove_all_extensions("README")



# run:
#
# document
# archive
# /tmp/file
# /tmp/report
# README
#

 



answered 1 day ago by avibootz
...