如何在没有破坏性方法的情况下替换CSV :: Table中的字符串

时间:2016-03-28 04:14:38

标签: ruby

我想替换CSV::Table中的字符串。 我可以使用gsub!替换字符串,如下所示:

csv = CSV.table(@csv_file)
csv[:tag].each do |tag|
  tag.gsub!('Replace1','Replace2')
  tag.gsub!('Replace3','Replace4')
end

但我更喜欢将gsub与方法链

一起使用
csv[:tag].each do |tag|
  tag = tag.gsub('Replace1','Replace2').
            gsub('Replace3','Replace4')
end

不幸的是,它并没有改变csv [:tag]字符串。 如何在不使用gsub!

的情况下替换CSV :: Table类中的字符串

1 个答案:

答案 0 :(得分:1)

gsub!会返回self,因此您可以执行相同的操作:

tag.gsub!('Replace1','Replace2').
    gsub!('Replace3','Replace4')

如果您想用已经计算过的字符串替换字符串,可以使用String#replace

new_tag = tag.gsub('Replace1','Replace2').
              gsub('Replace3','Replace4')
tag.replace(new_tag)