如何使用Array中的空格替换dash

时间:2012-04-17 20:25:30

标签: ruby-on-rails arrays replace gsub

如何用空格&替换短划线?用逗号同时下划线?

我能够用逗号替换下划线,但是当我试图再次通过数组重复它时,它给出了一些时髦的结果。

控制器

  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 个答案:

答案 0 :(得分:4)

您可以使用String#tr将一组字符替换为另一组字符:

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

以上内容将创建一个新列表,保持原始@cities字符串不变。 如果您使用破坏性版本(String#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 :(得分:2)

尝试:

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

给出:

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