Ruby 如何转换字符串,例如;这是一个例子;至;这是一个例子;红宝石下

Ruby 如何转换字符串,例如;这是一个例子;至;这是一个例子;红宝石下,ruby,Ruby,如何在ruby下将“this is a example”之类的字符串转换为“this is a example”?最简单的版本: "this is an example".tr(" ", "-") #=> "this-is-an-example" 您还可以执行类似的操作,通过更新正则表达式,该操作稍微更加健壮,并且更易于扩展: "this is an example".gsub(/\s+/, "-") #=> "this-is-an-example" 以上内容将把所有空白块(多个

如何在ruby下将“this is a example”之类的字符串转换为“this is a example”?

最简单的版本:

"this is an example".tr(" ", "-")
#=> "this-is-an-example"
您还可以执行类似的操作,通过更新正则表达式,该操作稍微更加健壮,并且更易于扩展:

"this is an example".gsub(/\s+/, "-")
#=> "this-is-an-example"
以上内容将把所有空白块(多个空格、制表符、换行符的任意组合)替换为一个短划线

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


如果你试图生成一个可以在URL中使用的字符串,你也应该考虑删除其他非字母数字字符(特别是URL中有特殊含义的字符),或者用字母数字等价物替换它们(如Rob Cameron在其答案中建议的)。.

如果你想制作一个好的URL,有很多方法可以做到

通常,您希望删除所有不是字母或数字的字符,然后用破折号替换所有空白字符

因此:

最后,
s
将等于
“这是一个示例”


我使用了ruby测试库中的源代码,该库名为获取此特定方法。

如果您使用Rails,请查看
参数化()
,它正是您想要的:


干杯,伙计,这正是我想要的,但它似乎不适用于Unicode,结果证明“参数化”方法在这里找不到
s = "this is an 'example'"
s = s.gsub(/\W+/, ' ').strip
s = s.gsub(/\s+/,'-')
foo = "Hello, world!"
foo.parameterize => 'hello-world'