如何在ruby下将“这是一个例子”等字符串转换为“这是一个例子”?
答案 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'