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