2012-04-17 85 views
1

如何用空格代替破折號&同時用逗號分隔下劃線?如何用陣列中的空格代替破折號

我能夠用逗號替換下劃線,但是當我試圖通過數組重複時,它給了一些時髦的結果。

控制器

def activity_by_all_city 
     @cities = ['Abilene_Texas','Akron_Ohio','Albuquerque_New-Mexico','Baton-Rouge_Louisiana'] 
    end 

查看

<% @cities.each do |city|%> 
    <%= link_to city.gsub!(/_/, ', '), 'activities-'+city.parameterize %><br> 
<% end %> 

回答

2

嘗試:

<%= link_to city.replace(city.gsub(/-/, ' ').gsub(/_/, ', ')), 'activities-'+city.parameterize %><br> 

給出:

<a href="activities-albuquerque-new-mexico">Albuquerque, New Mexico</a> 
3

你可以使用String#tr另一個替換的字符集:

@cities.collect {|city| city.tr('-_', ' ,') } 
=> ["Abilene,Texas", "Akron,Ohio", "Albuquerque,New Mexico", "Baton Rouge,Louisiana"] 

以上將創建一個新的列表,保持原有的@cities串完好無損。 如果使用破壞性版本(!字符串#TR),字符串將在地方修改,使得@cities持有翻譯城市名稱:

@cities.each {|city| city.tr!('-_', ' ,') } 
=> ["Abilene,Texas", "Akron,Ohio", "Albuquerque,New Mexico", "Baton Rouge,Louisiana"] 
@cities 
=> ["Abilene,Texas", "Akron,Ohio", "Albuquerque,New Mexico", "Baton Rouge,Louisiana"] 

(這一原則適用於所有的「破壞性」的方法,也gsub! ,他們改變了他們所應用的對象。)

+1

作者試圖用','(逗號+空格)替換空格。我想這不適合'tr'方法。 – jdoe 2012-04-17 20:56:37

+0

是的。我沒有這樣解釋這個問題,但是如果這是你的意圖,你當然是對的。 – 2012-04-17 21:07:20

相關問題