首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ruby帖子标题为鼻涕虫

问Ruby帖子标题为鼻涕虫
EN

Stack Overflow用户
提问于 2010-11-29 21:40:55
回答 5查看 28.9K关注 0票数 56

我应该如何将帖子标题转换成Ruby中的段塞呢?

标题可以有任何字符,但我只想让弹格允许[a-z0-9-_] (它应该允许其他字符吗?)

所以基本上:

  • 将所有字母小写
  • 将空格转换为连字符
  • 删除外来字符
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2010-11-29 21:44:08

代码语言:javascript
复制
slug = title.downcase.strip.gsub(' ', '-').gsub(/[^\w-]/, '')

downcase使其小写。strip确保没有前导或尾随空格。第一个gsub用连字符替换空格。第二个gsub移除所有非α非破折号非下划线字符(请注意,这个集合非常接近\W,但也包括破折号,这就是为什么在这里拼出来的)。

票数 89
EN

Stack Overflow用户

发布于 2010-11-29 23:47:35

这是铁轨吗?(在西纳特拉的作品)

代码语言:javascript
复制
string.parameterize

就这样。有关更复杂的弹射,请参见ActsAsUrl。它可以做到以下几点:

代码语言:javascript
复制
"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"
票数 107
EN

Stack Overflow用户

发布于 2010-11-29 21:45:45

弹状物是一个很棒的Rails插件,可以处理几乎所有东西,包括时髦的字符,但是它的实现非常简单。将其放入字符串中,您将得到排序。以下是浓缩的来源:

代码语言:javascript
复制
String.class_eval do
  def to_slug
    value = self.mb_chars.normalize(:kd).gsub(/[^\x00-\x7F]/n, '').to_s
    value.gsub!(/[']+/, '')
    value.gsub!(/\W+/, ' ')
    value.strip!
    value.downcase!
    value.gsub!(' ', '-')
    value
  end
end
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4308377

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档