2012-02-07 40 views
0

我想格式化製造商的名稱以在url中使用。正則表達式替換字符,然後刪除URL的空格和連字符

例子: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 

我知道必須有一個更好的方式來做到這一點比我有以上。任何更有經驗的程序員都有一些想法?

回答

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" 

有在紅寶石工具箱中的Permalinks and Slugs類別列出了幾個其他的選擇。

+0

最後一個字符哇我希望我早些時候問過這個。非常感謝Mark。 – chell 2012-02-08 08:07:25

0

如何:

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

好,但不要逃避 - 當它是[] – pguardiario 2012-02-07 11:35:08