如何安全地用rubyreplace所有的下划线空格?
这适用于任何有空格的string
str.downcase.tr!(" ", "_")
但没有空格的string会被删除
所以“新学校”会变成“新学校”,但“色彩”会变成“”,什么都不是!
tr的文档! 说
Translates str in place, using the same rules as String#tr. Returns str, or nil if no changes were made.
我想你会得到正确的结果,如果你使用tr没有感叹号。
与空间
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"
如果你有兴趣在蛇的情况下得到一个string,那么所提出的解决scheme就不太合适,因为你可能会得到连续的下划线和开始/结尾的下划线。
例如
1.9.3-p0 :010 > str= " John Smith Beer " => " John Smith Beer " 1.9.3-p0 :011 > str.downcase.tr(" ", "_") => "__john___smith_beer_"
下面的解决scheme会更好地工作:
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方法
老问题,但…
对于所有的空白你可能想要更像这样的东西:
"hey\t there world".gsub(/\s+/, '_') # hey_there_world
这会得到制表符和新行以及空格,并replace为一个_
。
正则expression式可以修改,以满足您的需求。 例如:
"hey\t there world".gsub(/\s/, '_') # hey__there___world
str.downcase.tr(" ", "_")
注意:不是“!”
你也可以做str.gsub(“”,“_”)
str = "Foo Bar" str.tr(' ','').underscore => "foo_bar"