我正在根据数据库转储生成的名称文本文件重命名文件。我正在做一个目录列表并检查每个目录是否包含“_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>
最佳答案
bob = "ThisIsDefaultText"
puts bob.dup.insert(-5, '_')
#=> ThisIsDefault_Text
puts bob
#=> ThisIsDefaultText
String 父对象有一个重复方法 .dup,它将“生成浅拷贝”。
关于ruby - 插入字符串并保留原始变量状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31708775/