我正在嘗試爲一些文章標題創建類似於行爲的固定鏈接,並且我不想爲固定鏈接添加新的數據庫字段。所以我決定寫一個幫手,將轉換我文章標題來自:使用ruby gsub和正則表達式更聰明地替換字符
「O 」的focoasă「 一pornit cruciada,împotrivabărbaţilorzgârciţi」 到 「鄰focoasa-A-pornit-cruciada-impotriva- barbatilor-zgarciti「。
雖然我想通了如何使用連字符代替空格和刪除其他特殊字符(除 - )使用:
title.gsub(/\s/, "-").gsub(/[^\w-]/, '').downcase
我想知道是否有任何其他方式與特定的其他替換字符字符只有一個.gsub方法調用,所以我不必爲我的本地化的所有UTF-8特殊字符鏈接title.gsub(「ă」,「a」)方法。
我想構建一個包含所有特殊字符及其對應物的散列,但是我還沒有弄清楚如何在正則表達式中使用變量。
我一直在尋找的是這樣的:
title.gsub(/\s/, "-").gsub(*replace character goes here*).gsub(/[^\w-]/, '').downcase
謝謝!
嗨,謝謝你的答案!在安裝了寶石後,我無法讓它與require'unicode'一起工作,所以我加了 config.gem'unidecode',:version =>'〜> 1.0.0',:source =>'http:// rubyforge .org'到我的環境文件中。 然後在幫手中,我剛剛創建了這個方法,就是這樣! def permalink(title) Unidecoder.decode(title).gsub(/ \ s /,「 - 」)。gsub(/ [^ \ w - ] /,'').downcase end – 2010-04-20 20:44:57
如果您嘗試要求'unicode',那會是你的問題,寶石是'unidecode';) – 2010-04-20 21:03:21
該死!你是對的:)這就是我得到這麼晚工作的原因。再次感謝! – 2010-04-20 21:41:17