正则表达式替换字符,然后删除网址的空格和连字符

时间:2012-02-07 10:22:54

标签: ruby regex

我想格式化要在网址中使用的制造商名称。

示例:IN-X / P.S.M. International

我写了一个如下的帮助方法

def clean_name(name)
      fn = name.gsub(/[.\/,&()]/, '') #replace these characters with nothing
      fnn=fn.strip.gsub(/[\s]/,'-')   #replace the spaces between the words with hyphens
      fnnn = fnn.gsub(/--/,'-')       #replace double hyphens with single ones
end

我知道必须有一个比我上面更好的方法。任何更有经验的程序员都有一些想法吗?

2 个答案:

答案 0 :(得分:5)

如果你正在使用Rails,你可以这样做:

string.parameterize

这来自ActiveSupport::Inflector。对于更复杂的段塞,请参阅ActsAsUrl。它可以执行以下操作:

"rock & roll".to_url => "rock-and-roll"
"$12 worth of Ruby power".to_url => "12-dollars-worth-of-ruby-power"
"10% off if you act now".to_url => "10-percent-off-if-you-act-now"
"kick it en Français".to_url => "kick-it-en-francais"
"rock it Español style".to_url => "rock-it-espanol-style"
"tell your readers 你好".to_url => "tell-your-readers-ni-hao"

Ruby Toolbox中的Permalinks and Slugs类别中列出了其他几个选项。

答案 1 :(得分:0)

这个怎么样:

def clean_name(name)
  name.gsub(/[.\/,&()]/, '').gsub(/[\s\-]+/, '-')
end