这适用于任何含有空格的字符串
str.downcase.tr!(" ", "_")
但是没有空格的字符串会被删除所以“New School”会变成“new_school”,但“color”会变成“",什么都没有!
wr98u20j1#
将“_”作为参数传递给参数(分隔符:'-')。对于Rails 4及更低版本,使用str.parameterize('_')
str.parameterize('_')
与空间
str = "New School" str.parameterize(separator: '_') => "new_school"
没有空间
str = "school" str.parameterize(separator: '_') => "school"
您也可以通过将下划线链接到参数来解决这个问题。
str = "New School" str.parameterize.underscore => "new_school"
str = "school" str.parameterize.underscore => "school"
bkhjykvo2#
关于TR!说使用与String#tr相同的规则就地翻译str。返回str,如果没有更改,则返回nil。我认为如果你使用tr而不使用感叹号,你会得到正确的结果。
1tuwyuhd3#
如果您对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方法
pxy2qtax4#
如果您使用的是rails 5及更高版本,
str.parameterize(separator: '_')
注意,这与.parameterize.underscore不完全相同:
.parameterize.underscore
"New School 1-2".parameterize( separator: "_" ) #=> "new_school_1-2" "New School 1-2".parameterize.underscore #=> "new_school_1_2"
i7uaboj45#
老问题了但是...对于所有空白,您可能需要类似于以下内容的内容:
"hey\t there world".gsub(/\s+/, '_') # hey_there_world
这将获得制表符和新行以及空格,并替换为单个_。可以修改正则表达式以满足您的需要。例如:
_
"hey\t there world".gsub(/\s/, '_') # hey__there___world
hfwmuf9z6#
str.downcase.tr(" ", "_")
注:无“!”
deikduxw7#
也可以使用str.gsub(““,“_”)
nhaq1z218#
str = "Foo Bar" str.tr(' ','').underscore => "foo_bar"
8条答案
按热度按时间wr98u20j1#
将“_”作为参数传递给参数(分隔符:'-')。对于Rails 4及更低版本,使用
str.parameterize('_')
示例:
与空间
没有空间
您也可以通过将下划线链接到参数来解决这个问题。
示例:
与空间
没有空间
bkhjykvo2#
关于TR!说
使用与String#tr相同的规则就地翻译str。返回str,如果没有更改,则返回nil。
我认为如果你使用tr而不使用感叹号,你会得到正确的结果。
1tuwyuhd3#
如果您对snake case中的字符串感兴趣,那么建议的解决方案不太有效,因为您可能会得到连接的下划线和起始/尾随下划线。
例如
下面的解决方案会更好:
squish是Rails提供的一个String方法
pxy2qtax4#
如果您使用的是rails 5及更高版本,
注意,这与
.parameterize.underscore
不完全相同:i7uaboj45#
老问题了但是...
对于所有空白,您可能需要类似于以下内容的内容:
这将获得制表符和新行以及空格,并替换为单个
_
。可以修改正则表达式以满足您的需要。例如:
hfwmuf9z6#
注:无“!”
deikduxw7#
也可以使用str.gsub(““,“_”)
nhaq1z218#