是否有更优雅的子串方式?

时间:2016-04-04 14:08:59

标签: ruby string filenames

这是我的代码

file_name = Dir['path/xml/test/*.txt']
file_name.to_s # => ["path/xml/test/test.txt"]

我想回来:

"test"

我可以使用以下代码执行此操作:

file_name = Dir['path/xml/test/*.txt']
file_name.to_s[15,60].gsub(/.txt["]/,"").gsub(/]/,"")

但它不是很优雅。有没有更优雅的方法只返回没有.txt[]的文件名?

2 个答案:

答案 0 :(得分:5)

File.basename(Dir['path/xml/test/*.txt'].first, ".txt")
# => "test"

为所有文件执行此操作,

Dir['path/xml/test/*.txt'].map{|e| File.basename(e, ".txt")}

答案 1 :(得分:0)

如果有更多文件,也可以......

Dir[ 'path/name/*.txt' ].map { | e | 
  File.basename( e ).split(".").first 
}