【问题标题】:Make space to dash with regexp使用正则表达式腾出空间
【发布时间】:2010-08-04 12:41:13
【问题描述】:

我有一个 sinatra 应用程序,我计划在其中即时制作一个friedly-urls。我有一个带有正则表达式的函数,看起来像这样,但它不会将“空格”转换为“破折号”,将“”转换为“-”。

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

提前致谢!

更新

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

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

【问题讨论】:

  • 是的,它来自运行 Sinatra 框架的 Ruby 应用程序。
  • 更新是一个新问题,所以:1)再次寻找类似的问题+答案,2)特别查看stackoverflow.com/questions/3046462

标签: ruby regex sinatra


【解决方案1】:

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

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

* 小写它(我的 & title5:)
* 将一个或多个空白字符替换为 - (my-&-title5:)
* 将非字母/数字字符替换为空 (my--title5)
* 将多次出现的 - 替换为 - (my-title5)

我希望这会有所帮助。

【讨论】:

    【解决方案2】:

    无论是哪种语言,您首先将“”替换为“-”,然后将除a-z0-9_(因此,“-”)之外的所有内容替换为“”。在列表中包含“-”,如[^a-z0-9_-]

    【讨论】:

    • 知道如何将 åäö 变成 aao 吗?
    • 是的,iconv 是一个神奇的词,而 google 是你的朋友。试试require 'iconv'Iconv.conv("ASCII//TRANSLIT","UTF-8","åäö")。这在 irb 中确实有效,但在没有设置语言环境时(显然)在脚本中失败。见stackoverflow.com/questions/3046462
    猜你喜欢
    • 1970-01-01
    • 2020-04-19
    • 1970-01-01
    • 2021-09-20
    • 1970-01-01
    • 1970-01-01
    • 2013-08-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多