【问题标题】:How to replace dash with a space from an Array如何用数组中的空格替换破折号
【发布时间】:2012-04-29 05:26:57
【问题描述】:

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

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

控制器

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

【问题讨论】:

    标签: ruby-on-rails arrays replace gsub


    【解决方案1】:

    您可以使用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!,它们会更改它们所应用的对象。)

    【讨论】:

    • 作者尝试将空格替换为','(逗号+空格)。我想这不适合tr 方法。
    • 是的。我没有这样解释这个问题,但如果这是你的意图,你当然是正确的。
    【解决方案2】:

    试试:

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

    给予:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-14
      • 1970-01-01
      • 1970-01-01
      • 2013-12-11
      • 1970-01-01
      • 2013-07-08
      相关资源
      最近更新 更多