Ruby on rails 如何用ruby安全地用下划线替换所有空格?
这适用于任何包含空格的字符串Ruby on rails 如何用ruby安全地用下划线替换所有空格?,ruby-on-rails,ruby,ruby-on-rails-3,Ruby On Rails,Ruby,Ruby On Rails 3,这适用于任何包含空格的字符串 str.downcase.tr!(" ", "_") 但是没有空格的字符串会被删除 所以“新学校”会变成“新学校”,但“颜色”会变成“”,没什么 say的文档 使用与String#tr相同的规则就地转换str。如果未进行任何更改,则返回str或nil 我想如果你不使用感叹号,你会得到正确的结果 str.downcase.tr(" ", "_") 注意:没有“!”您也可以这样做 str.gsub(“,”)如果您对输入字符串感兴趣,那么建议的解决方案不太管用,因为您
str.downcase.tr!(" ", "_")
但是没有空格的字符串会被删除
所以“新学校”会变成“新学校”,但“颜色”会变成“”,没什么 say的文档
使用与String#tr相同的规则就地转换str。如果未进行任何更改,则返回str或nil
我想如果你不使用感叹号,你会得到正确的结果
str.downcase.tr(" ", "_")
注意:没有“!”您也可以这样做
str.gsub(“,”)如果您对输入字符串感兴趣,那么建议的解决方案不太管用,因为您可能会得到串联下划线和起始/结尾下划线 比如说
1.9.3-p0 :010 > str= " John Smith Beer "
=> " John Smith Beer "
1.9.3-p0 :011 > str.downcase.tr(" ", "_")
=> "__john___smith_beer_"
下面的解决方案效果更好:
1.9.3-p0 :010 > str= " John Smith Beer "
=> " John Smith Beer "
1.9.3-p0 :012 > str.squish.downcase.tr(" ","_")
=> "john_smith_beer"
squish是Rails提供的字符串方法
str = "Foo Bar"
str.tr(' ','').underscore
=> "foo_bar"
有空间
没有空间
编辑:-
我们还可以将‘‘’作为参数传递给参数化
有空间
没有空间
编辑:
对于Rails 5和更高版本,请使用str.parameterize(分隔符:'.')
旧问题,但是
对于所有的空白,您可能需要更像这样的内容:
"hey\t there world".gsub(/\s+/, '_') # hey_there_world
这将获取制表符、新行和空格,并替换为单个\uu
正则表达式可以根据您的需要进行修改。例如:
"hey\t there world".gsub(/\s/, '_') # hey__there___world
如果您使用的是rails 5及更高版本,那么您可以通过
str.parameterize(separator: '_')
不要相信我的话,但我认为这是
str.gsub/\s/,''.'
I figurestr.downcase.split.join('.''.
也可以在“squish”不可用的情况下工作;)小心点parameterize
将转换多个空格--许多特殊字符也将被转换。parameterize
的目的是使字符串URL友好。注意,Ruby中没有string#parameterize
。不过,Rails中有String#parameterize
。parameterize不再接受参数。在Rails 5上,使用str.parameterize(分隔符:'.')
。事实上,代码>更改调用它的内容,而没有代码>它返回一个新字符串
str = "school"
str.parameterize('_')
=> "school"
"hey\t there world".gsub(/\s+/, '_') # hey_there_world
"hey\t there world".gsub(/\s/, '_') # hey__there___world
str.parameterize(separator: '_')