2012-04-17 42 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

相关问题