2016-03-28 24 views
0

CSV::Table numaralı dizgede dizgeyi değiştirmek istiyorum. Böyle gsub! kullanarak dize yerini alabilir:CSV dizgisi nasıl değiştirilir? Yıkıcı yöntem olmadan tablo

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

Ama ne yazık ki csv değişmez yöntem zinciri

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

ile gsub kullanmayı tercih [: tag] dizeleri. gsub! kullanmadan CSV :: Table sınıfındaki dizeyi nasıl değiştirebilirim? Eğer aynı şeyi böylece

cevap

1

gsub! döner self,: Henüz hesaplanan bir dize ile bir dize değiştirmek istiyorsanız

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

, sen String#replace kullanabilirsiniz: muhtemelen

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

atama gereksizdir – user12341234

+0

@ user12341234: Oh, elbette ... Kopyala-yapıştır-itis – Amadan

+0

'gsub!' sadece 'eşleşme' geri döndüğünde, 'yerine' yöntemini kullanacağım. Teşekkürler! – ironsand

İlgili konular