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

时间:2011-08-18 11:50:56

标签: ruby string

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

Hello, my\n       name is Michael.

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

Hello, my name is Michael.

9 个答案:

答案 0 :(得分:164)

查看Rails squish方法:

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

答案 1 :(得分:33)

说明内置挤压的Rubys:

string.gsub("\n", ' ').squeeze(' ')

答案 2 :(得分:17)

最简单的方法可能是

s = "Hello, my\n       name is Michael."
s.split.join(' ') #=> "Hello, my name is Michael."

答案 3 :(得分:5)

试试这个:

s = "Hello, my\n       name is Michael."
s.gsub(/\n\s+/, " ")

答案 4 :(得分:4)

此正则表达式将使用1个空格替换1个或多个空格的实例,p.s \s将替换包含\s\t\r\n\f的所有空白字符:

a_string.gsub!(/\s+/, ' ')

同样仅适用于回车

str.gsub!(/\n/, " ")

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

答案 5 :(得分:4)

my_string = "Hello, my\n       name is Michael."
my_string = my_string.gsub( /\s+/, " " )

答案 6 :(得分:3)

使用String#gsub

s = "Hello, my\n       name is Michael."
s.gsub(/\s+/, " ")

答案 7 :(得分:1)

Use squish
currency = " XCD"
str = currency.squish
 str = "XCD" #=> "XCD"

答案 8 :(得分:0)

通过仅包含以下Ruby Facet,您可以仅将squish方法添加到Ruby:

https://github.com/rubyworks/facets/blob/master/lib/core/facets/string/squish.rb

require 'facets/string/squish'

然后使用

"my    \n   string".squish #=> "my string"

不需要Rails。