Ruby 有没有更优雅的子串方法?

Ruby 有没有更优雅的子串方法?,ruby,string,filenames,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(/]/,"") 但是它不是很优雅。是否有一种更优雅的方法,只返回文件名而不返回.

这是我的密码

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
[]

File.basename(Dir['path/xml/test/*.txt'].first, ".txt")
# => "test"
要对所有文件执行此操作

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

要对所有文件执行此操作

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

如果有更多文件,也可能

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

如果有更多文件,也可能

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

由于
Dir[]
为您提供了一个数组,因此不应将其强制转换为字符串。相反,可以调用
.first
或可能对其调用
.pop
(或根据需要访问数组元素的许多其他可能性)来获取第一个元素,然后您可以使用来检索所需文件名的部分。您是否希望
Dir[]
将返回多个文件?如果是,是否要获取所有元素的名称?是的,我要返回多个名称,以便将文件名与xml中的一个元素相匹配。由于
Dir[]
为您提供了一个数组,因此不应将其强制转换为字符串。相反,可以调用
.first
或可能对其调用
.pop
(或根据需要访问数组元素的许多其他可能性)来获取第一个元素,然后您可以使用来检索所需文件名的部分。您是否希望
Dir[]
将返回多个文件?如果是,您想获取所有文件的名称吗?是的,我想返回多个名称,以便将文件名与xml中的一个元素相匹配。我将如何对数组中的所有文件执行此操作?如何对数组中的所有文件执行此操作?已经知道它们都是
.txt
,因此,如果只使用
File.basename(e,'.txt')
@MichaelBerkowski,则可以避免拆分。这是真的,但我喜欢使用
first
last
访问字符串的各个部分。众所周知,它们都是
.txt
,因此,如果只使用
File.basename(e,'.txt'),则可以避免拆分
@MichaelBerkowski没错,但我喜欢使用
first
last