如何将像“这是一个例子”的字符串转换为ruby下的“this-is-an-example”

时间:2009-08-25 08:56:32

标签: ruby

如何在ruby下将“这是一个例子”等字符串转换为“这是一个例子”?

3 个答案:

答案 0 :(得分:7)

最简单的版本:

"this is an example".tr(" ", "-")
#=> "this-is-an-example"

你也可以做这样的事情,通过更新正则表达式,它更强大,更容易扩展:

"this is an example".gsub(/\s+/, "-")
#=> "this-is-an-example"

以上内容将所有空白块(多个空格,制表符,换行符的任意组合)替换为单个短划线。

有关可用于在Ruby中操作字符串的方法的更多详细信息,请参阅String class reference

如果您尝试生成可在URL中使用的字符串,则还应考虑剥离其他非字母数字字符(尤其是URL中具有特殊含义的字符),或将其替换为字母数字等效字符({ {3}},正如Rob Cameron在回答中所建议的那样。)

答案 1 :(得分:4)

如果你想创造一个好的URL slug,有很多方法可以做到。

通常,您要删除所有非字母或数字的内容,然后用破折号替换所有空白字符。

所以:

s = "this is an 'example'"
s = s.gsub(/\W+/, ' ').strip
s = s.gsub(/\s+/,'-')

最后s将等于"this-is-an-example"

我使用了名为contest的ruby测试库中的源代码来实现此特定方法。

答案 2 :(得分:2)

如果您正在使用Rails,请查看parameterize(),它正是您正在寻找的内容:

http://api.rubyonrails.org/classes/ActiveSupport/CoreExtensions/String/Inflections.html#M001367

foo = "Hello, world!"
foo.parameterize => 'hello-world'