使用ruby gsub和regexp更智能地替换字符

ale*_*x.g 4 ruby string replace ruby-on-rails gsub

我正在尝试为某些文章标题创建类似行为的永久链接,我不想为永久链接添加新的数据库字段.所以我决定写一个帮助器来转换我的文章标题:

" O"focoasă"a pornit cruciada,împotrivabărbaţilorzgârciţi "to" o-focoasa-a-pornit-cruciada-impotriva-barbatilor-zgarciti ".

虽然我想出了如何用连字符替换空格并删除其他特殊字符(除了 - )使用:

title.gsub(/\s/, "-").gsub(/[^\w-]/, '').downcase
Run Code Online (Sandbox Code Playgroud)

我想知道是否有任何其他方法可以从一个.gsub方法调用替换一个特定的其他字符的字符,所以我不必为所有的链接title.gsub("ă","a")方法我本地化的UTF-8特殊字符.

我正在考虑用所有特殊字符和它们的对应物构建一个哈希,但我还没有弄清楚如何使用regexp的变量.

我在寻找的是:

title.gsub(/\s/, "-").gsub(*replace character goes here*).gsub(/[^\w-]/, '').downcase
Run Code Online (Sandbox Code Playgroud)

谢谢!

Dan*_*uis 5

我在我的应用程序中使用Unidecoder gem 解决了这个问题:

require 'unidecode'

def uninternationalize(str)
  Unidecoder.decode(str).gsub("[?]", "").gsub(/`/, "'").strip
end
Run Code Online (Sandbox Code Playgroud)