我的任务:
编写一个程序以使用正则表达式重命名文件。这 程序将采用三个命令行参数:其中的目录 重命名文件,使用与文件匹配的正则表达式 重命名,以及用于替换正则表达式匹配项的字符串。 这 主要用途是更改文件扩展名,但它应该能够 处理替换文件名的任何部分。它应该运行为 遵循:
./fixname.rb dir 'pattern' replacement
我编写的程序是:
puts "Renaming files..."
folder_path = ARGV[0]
reg_exp = ARGV[1].to_regexp
Dir.glob(folder_path + "/*").sort.each do |f|
filename = File.basename(f, File.extname(f))
myString = String.new
myString = filename
filename = myString.gsub(reg_exp, ARGV[2])
#puts myString
File.rename(f, folder_path + "/" + filename + File.extname(f))
end
puts "Renaming complete."
当我使用正则表达式时不会发生重命名,否则它正在工作。我得到:
error "`gsub': no implicit conversion of nil into String (TypeError)"
你认为是正则表达式的不是,它是一个包含正则表达式模式的字符串。
您需要将其转换为正则表达式对象。如何做到这一点留给你。