我根据从数据库转储生成的名称的文本文件重命名文件。我正在进行目录列表并检查它们是否包含" _P2.PSD"。如果文件包含该子字符串,则循环遍历下划线可能存在的3个不同位置,并查看该字符串是否存在于文件中。如果我根据文件内容找到匹配项,我将使用该格式重命名图像。
以下是代码的一部分:
Dir.glob("#{directory}").each do |file|
if "#{file.include? ("_P2")}" == "true"
if File.readlines("#{db_Dump}").grep(/#{file.insert(-11, '_')}/).size > 0
logger.info{"#{file}"}
#mod_file = file.insert(-11, '_')
#logger.info{"#{file} -> #{mod_file}"}
elsif File.readlines("#{db_Dump}").grep(/#{file.insert(-10, '_')}/).size > 0
logger.info{"#{file}"}
#mod_file = file.insert(-10, '_')
#logger.info{"#{file} -> #{mod_file}"}
elsif File.readlines("#{db_Dump}").grep(/#{file.insert(-9, '_')}/).size > 0
logger.info{"#{file}"}
#mod_file = file.insert(-9, '_')
#logger.info{"#{file} -> #{mod_file}"}
else
logger.info{"NO_UNDERSCORE_PLACEMENT_FOUND -> #{file}"}
end
end
end
真正的问题:
irb(main):001:0> bob="ThisIsDefaultText"
=> "ThisIsDefaultText"
irb(main):002:0> puts bob.insert(-5,'_')
ThisIsDefault_Text
=> nil
irb(main):003:0> puts bob
ThisIsDefault_Text
=> nil
irb(main):004:0>
答案 0 :(得分:3)
bob = "ThisIsDefaultText"
puts bob.dup.insert(-5, '_')
#=> ThisIsDefault_Text
puts bob
#=> ThisIsDefaultText
String父对象有一个重复的方法.dup将“生成一个浅拷贝”。