Ruby 切断给定字符串的文件名和扩展名
我构建了一个小脚本,用于解析给定文件类型文件的目录,并将位置(包括文件名)存储在数组中。这个看起来像这样:Ruby 切断给定字符串的文件名和扩展名,ruby,regex,string,path,Ruby,Regex,String,Path,我构建了一个小脚本,用于解析给定文件类型文件的目录,并将位置(包括文件名)存储在数组中。这个看起来像这样: def getFiles(directory) arr = Dir[directory + '/**/*.plt'] arr.each do |k| puts "#{k}" end end 输出是路径和文件。但我只想要那条路 我只想要/foo,而不是/foo/bar.txt/ 我的第一个想法是一个regexp,但我不知道该怎么做。我会用斜杠将它拆分成一个数组,然后删除
def getFiles(directory)
arr = Dir[directory + '/**/*.plt']
arr.each do |k|
puts "#{k}"
end
end
输出是路径和文件。但我只想要那条路
我只想要/foo,而不是/foo/bar.txt/
我的第一个想法是一个regexp,但我不知道该怎么做。我会用斜杠将它拆分成一个数组,然后删除最后一个元素(文件名),然后再将它合并成一个字符串
path = '/foo/bar.txt'
path = path.split '/'
path.pop
path = path.join '/'
# path is now '/foo'
以下代码应该可以工作(在ruby控制台中测试): rindex查找最后一次出现的子字符串的索引。这是文件
祝你好运 不确定您使用的是哪种语言,但这里是字符串最后/结尾的正则表达式
/[^\/]*+$/
对字符串结尾之前不是“/”的所有字符进行音译您不需要正则表达式或拆分
File.dirname("/foo/bar/baz.txt")
# => "/foo/bar"
有什么用吗
File.dirname(文件名)→ 目录名称
返回文件名的所有组件
以文件名给出,最后一个除外
一文件名必须使用
正斜杠(`/'')不考虑
本地文件上使用的分隔符
系统
File.dirname("/home/gumby/work/ruby.rb") #=> "/home/gumby/work"
对于正则表达式,这应该是可行的,因为*是贪婪的:
.*/
.*/