从Ruby中删除字符串中的所有空格

Ayu*_*hra 14 ruby string whitespace

如何从Ruby中的字符串中删除所有换行符和空格?

例如,如果我们有一个字符串:

"123\n12312313\n\n123 1231 1231 1"
Run Code Online (Sandbox Code Playgroud)

应该成为这样的:

"12312312313123123112311"
Run Code Online (Sandbox Code Playgroud)

也就是说,应删除所有空格.

Fun*_*uit 36

您可以使用以下内容:

var_name.gsub!(/\s+/, '')
Run Code Online (Sandbox Code Playgroud)

或者,如果要返回更改的字符串,而不是修改变量,

var_name.gsub(/\s+/, '')
Run Code Online (Sandbox Code Playgroud)

这也可以让你用其他方法链接它(即something_else = var_name.gsub(...).to_i剥离空格然后将其转换为整数).gsub!将它编辑到位,所以你必须写var_name.gsub!(...); something_else = var_name.to_i.严格来说,只要至少有一个更改,gsub!将返回新版本(即同样的东西gsub将返回),但是如果你得到一个没有空格的字符串的机会,它将返回nil,事情会发生打破.因此,gsub如果你是链接方法,我更愿意.

gsub通过将第一个参数的任何匹配替换为内容第二个参数来工作.在这种情况下,它将任何连续的空白字符序列(或只是一个)与正则表达式匹配/\s+/,然后用空字符串替换它们.如果你想对匹配的部分进行一些处理,而不是直接替换,那么还有一个块形式; String#gsub有关详细信息,请参阅.

这个类的Ruby文档Regexp是学习更多关于正则表达式的一个很好的起点 - 我发现它们在各种各样的情况下非常有用,在这种情况下,这里或那里几毫秒都没有数,你不会需要匹配可以任意嵌套的东西.

正如Gene在评论中所说,你也可以使用tr:

var_name.tr(" \t\r\n", '')
Run Code Online (Sandbox Code Playgroud)

它的工作原理类似的方式,但是,而不是更换一个正则表达式,它替代了的每个实例ñ日,它被称为上与字符串中的第一个参数的字符ñ日的第二个参数的字符,或者如果没有,没有.有关String#tr更多信息,请参阅


Car*_*and 6

你也可以使用String#delete:

str = "123\n12312313\n\n123 1231 1231 1"

str.delete "\s\n"
  #=> "12312312313123123112311"
Run Code Online (Sandbox Code Playgroud)

你可以使用String#delete!要进行修改str,但如果没有进行任何更改,则会delete!返回注释nil