这适用于任何包含空格的字符串
str.downcase.tr!(" ", "_")
但没有空格的字符串会被删除
所以“New School”会变成“new_school”,但“color”会变成“”,什么都没有!
答案 0 :(得分:91)
有空格
str = "New School"
str.parameterize.underscore
=> "new_school"
没有空间
str = "school"
str.parameterize.underscore
=> "school"
编辑: - 我们也可以通过' _'作为参数化的参数。
有空格
str = "New School"
str.parameterize('_')
=> "new_school"
没有空间
str = "school"
str.parameterize('_')
=> "school"
答案 1 :(得分:36)
答案 2 :(得分:36)
如果您对在snake case中获取字符串感兴趣,那么建议的解决方案并不常用,因为您可能会获得连接的下划线和开始/尾随下划线。
例如
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提供的String方法
答案 3 :(得分:8)
老问题,但是......
对于所有空白,你可能想要更像这样的东西:
"hey\t there world".gsub(/\s+/, '_') # hey_there_world
这会获得标签和新行以及空格,并替换为单个_
。
可以修改正则表达式以满足您的需求。 E.g:
"hey\t there world".gsub(/\s/, '_') # hey__there___world
答案 4 :(得分:8)
如果您使用的是5及以上的rails,则可以使用
实现相同的功能str.parameterize(separator: '_')
答案 5 :(得分:6)
str.downcase.tr(" ", "_")
注意:没有“!”
答案 6 :(得分:2)
str = "Foo Bar"
str.tr(' ','').underscore
=> "foo_bar"
答案 7 :(得分:1)
你也可以这样做 str.gsub(“”,“_”)