删除String中的多个空格和新行

Kre*_*eki 94 ruby string

假设我们有这样的字符串:

Hello, my\n       name is Michael.
Run Code Online (Sandbox Code Playgroud)

如何删除该新行并将其后的那些空格删除到字符串内部以获取此内容?

Hello, my name is Michael.
Run Code Online (Sandbox Code Playgroud)

soc*_*ata 177

看看Rails squish方法:

http://apidock.com/rails/String/squish

  • 对于非Rails上下文,使用`some_string.strip.gsub(/\s + /,"")`这正是squish所做的. (16认同)
  • 最简单,最优雅的解决方案.谢谢.但是有一件事,这个方法是在Rails中定义的,所以它只适用于Rails应用程序,幸运的是我的情况. (6认同)
  • 正如Kreeki说得有点不清楚,这是一个Rails方法,而不是Ruby方法. (3认同)

ste*_*lag 34

为了说明Rubys内置的挤压:

string.gsub("\n", ' ').squeeze(' ')
Run Code Online (Sandbox Code Playgroud)

  • 但是`挤压('')`只是挤压空间.`"挤压我的应用程序的副本".squeeze('')=>"挤压我的应用程序的副本"`. (8认同)
  • 请注意:squeeze将压缩所有以多个字符运行的字符串.所以"挤压我的应用程序的副本".squeeze =>"Squeze my aplication's copy" (3认同)

Kor*_*tor 21

最简单的方法可能是

s = "Hello, my\n       name is Michael."
s.split.join(' ') #=> "Hello, my name is Michael."
Run Code Online (Sandbox Code Playgroud)


fl0*_*00r 7

my_string = "Hello, my\n       name is Michael."
my_string = my_string.gsub( /\s+/, " " )
Run Code Online (Sandbox Code Playgroud)


anu*_*sha 6

试试这个:

s = "Hello, my\n       name is Michael."
s.gsub(/\n\s+/, " ")
Run Code Online (Sandbox Code Playgroud)


Ali*_*Ali 5

此正则表达式将用 1 个空格替换 1 个或多个空格的实例,ps\s将替换所有空格字符,其中包括\s\t\r\n\f

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

同样只有回车

str.gsub!(/\n/, " ")
Run Code Online (Sandbox Code Playgroud)

首先用\n空格替换所有,然后使用删除多个空格正则表达式。