Comment obtenir le nom du fichier à partir d'un chemin d'accès en Ruby ?
Par exemple, si j'ai un chemin d'accès de "C:\projects\blah.dll"
et je veux juste le "blah".
Y a-t-il un LastIndexOf
en Ruby ?
Comment obtenir le nom du fichier à partir d'un chemin d'accès en Ruby ?
Par exemple, si j'ai un chemin d'accès de "C:\projects\blah.dll"
et je veux juste le "blah".
Y a-t-il un LastIndexOf
en Ruby ?
Essayez File.basename
Renvoie le dernier composant du nom de fichier donné dans nom_fichier, qui doit être formé en utilisant des barres obliques (``/'') indépendamment du séparateur utilisé sur le système de fichiers local. Si le suffixe est donné et présent à la fin de nom_de_fichier, il est supprimé.
File.basename("/home/gumby/work/ruby.rb") #=> "ruby.rb" File.basename("/home/gumby/work/ruby.rb", ".rb") #=> "ruby"
Dans votre cas :
File.basename("C:\\projects\\blah.dll", ".dll") #=> "blah"
Avec Linux et Ruby 1.8 j'essaye de Pathname.new("some/path/to/my.file").basename
et obtenir my.file/
:'(
Je ne sais pas pourquoi c'est la réponse la mieux classée alors que File.basename ne nécessite pas un 'require' supplémentaire de 'pathname'.
Classe pathname
fonctionne avec les chemins d'accès locaux tandis que File
suppose toujours les noms de chemin Unix (la différence réside dans les séparateurs de chemin et de lecteur qui sont utilisés dans MS Windows, par exemple).
@korch : Vous devriez probablement montrer les différents comportements de Pathname.new("C:/some/path").basename
à File.basename("C:/some/path")
(voir le commentaire de nimrodm).
La réponse de Jonathon est meilleure, mais pour vous faire savoir somelist[-1]
est l'un des LastIndexOf
les notations disponibles.
Comme l'a mentionné krusty.ar somelist.last
l'est aussi, apparemment.
irb(main):003:0* f = 'C:\\path\\file.txt'
irb(main):007:0> f.split('\\')
=> ["C:", "path", "file.txt"]
irb(main):008:0> f.split('\\')[-1]
=> "file.txt"
Le traiter purement comme une chaîne, plutôt que comme un chemin, rend le code moins portable.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.
3 votes
N'oubliez pas qu'un point suivi de quelques caractères (trois, peut-être) n'a rien de spécial. Ils font partie du nom du fichier. Certains systèmes d'exploitation marginaux pensent qu'il y a quelque chose de spécial à propos de cette partie d'un nom de fichier, mais vous ne devriez pas tomber dans ce piège.