2016-03-28 71 views
0

我想替換CSV::Table中的字符串。 我可以通過使用gsub!這樣的替換字符串:如何在不使用破壞性方法的情況下替換CSV :: Table中的字符串

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 [:標籤]字符串。 如何在不使用gsub!的情況下替換CSV :: Table類中的字符串?

回答

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) 
+0

可能是分配是無用的 – user12341234

+0

@ user12341234:哦,當然...只有當匹配時,纔會複製粘貼它 – Amadan

+0

'gsub!'return'self',所以我將使用'replace'方法。謝謝! – ironsand

相關問題