2

如何同时用空格替换破折号和用逗号替换下划线?

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

控制器

  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 %>
4

2 回答 2

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!,它们会改变它们所应用的对象。)

于 2012-04-17T20:53:27.100 回答
2

尝试:

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

给出:

<a href="activities-albuquerque-new-mexico">Albuquerque, New Mexico</a>
于 2012-04-17T20:42:04.947 回答