用正则表达式创建空间

时间:2010-08-04 12:41:14

标签: ruby regex sinatra

我有一个sinatra应用程序,我计划在飞行中制作一个油炸的网址。我有一个带有正则表达式的函数看起来像这样,但它不会将'space'变成'破折号',''变成' - '。

def self.make_slug(title)
  title.downcase.gsub(/ /, '-').gsub(/[^a-z0-9_]/, '').squeeze('-')
end

提前致谢!

更新

现在我也试图将åä改为a和ö到o,我的代码看起来像这样但不起作用,有什么想法吗?

gsub(/[åä]/, 'a')
gsub(/[ö]/, 'o')

2 个答案:

答案 0 :(得分:8)

title.downcase.gsub(/\s+/, '-').gsub(/[^a-z0-9_-]/, '').squeeze('-')

这将采用给定的标题(My& Title5 :)和:

* downcase it(my& title5 :)
*用 - (my-& -title5 :)替换一个或多个空格字符 *替换非字母/数字字符(my - title5)
*替换多次出现 - with - (my-title5)

我希望这会有所帮助。

答案 1 :(得分:2)

无论使用何种语言,您首先用“ - ”替换“”,然后用“”替换a-z0-9_(因此也是“ - ”)之外的所有内容。在列表中加入“ - ”,例如[^a-z0-9_-]