Удалить несколько пробелов и новых строк внутри строки - PullRequest
89 голосов
/ 18 августа 2011

Предположим, у нас есть строка, подобная этой:

Hello, my\n       name is Michael.

Как я могу удалить эту новую строку и разделить эти пробелы после этого на один внутри строки, чтобы получить это?

Hello, my name is Michael.

Ответы [ 9 ]

165 голосов
/ 18 августа 2011

проверить рельсы squish метод:

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

34 голосов
/ 18 августа 2011

Для иллюстрации встроенных Ruby squeeze :

string.gsub("\n", ' ').squeeze(' ')
19 голосов
/ 18 августа 2011

Самый простой способ, вероятно, будет

s = "Hello, my\n       name is Michael."
s.split.join(' ') #=> "Hello, my name is Michael."
5 голосов
/ 30 апреля 2014

Попробуйте:

s = "Hello, my\n       name is Michael."
s.gsub(/\n\s+/, " ")
4 голосов
/ 18 августа 2011
my_string = "Hello, my\n       name is Michael."
my_string = my_string.gsub( /\s+/, " " )
4 голосов
/ 18 августа 2011

это регулярное выражение заменит экземпляр 1 или более пробелов на 1 пробел, p.s \s заменит все символы пробела, включая \s\t\r\n\f:

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

Аналогично только для возврата каретки

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

Сначала замените все \n пробелами, затем используйте регулярное выражение удаления нескольких пробелов.

3 голосов
/ 18 августа 2011

Использование Строка # gsub :

s = "Hello, my\n       name is Michael."
s.gsub(/\s+/, " ")
1 голос
/ 19 декабря 2018

Вы можете добавить только метод squish (и ничего больше) в Ruby, включив только этот аспект 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.

1 голос
/ 20 декабря 2016
Use squish
currency = " XCD"
str = currency.squish
 str = "XCD" #=> "XCD"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...