Функция Ruby для удаления всех пробелов? - PullRequest
525 голосов
/ 28 октября 2009

Что такое функция Ruby для удаления всех пробелов? Вроде как php's trim()?

Ответы [ 21 ]

807 голосов
/ 28 октября 2009

Если вы хотите удалить только начальные и конечные пробелы (например, обрезку PHP), вы можете использовать .strip, но если вы хотите удалить все пробелы, вы можете использовать .gsub(/\s+/, "") вместо.

469 голосов
/ 28 октября 2009
s = "I have white space".delete(' ')

И для эмуляции PHP trim() функции:

s = "   I have leading and trailing white space   ".strip
158 голосов
/ 28 октября 2009

Связанный ответ:

"   clean up my edges    ".strip

возвращает

"clean up my edges"
128 голосов
/ 10 мая 2016

String#strip - удалить все пробелы в начале и конце.

String#lstrip - только с самого начала.

String#rstrip - только с конца.

String#chomp (без аргументов) - удаляет разделители строк (\n или \r\n) с конца.

String#chop - удаляет последний символ.

String#delete - x.delete(" \t\r\n") - удаляет все перечисленные пробелы.

String#gsub - x.gsub(/[[:space:]]/, '') - удаляет все пробелы, включая юникод .


Примечание : все вышеприведенные методы возвращают новую строку вместо изменения оригинала. Если вы хотите изменить строку на месте, вызовите соответствующий метод с ! в конце.

89 голосов
/ 04 июля 2013
"1232 23 2 23 232 232".delete(' ')
=> "123223223232232"

Удаление работает быстрее =)

user         system     total      real
gsub, s      0.180000   0.010000   0.190000 (0.193014)
gsub, s+     0.200000   0.000000   0.200000 (0.196408)
gsub, space  0.220000   0.000000   0.220000 (0.222711)
gsub, join   0.200000   0.000000   0.200000 (0.193478)
delete       0.040000   0.000000   0.040000 (0.045157)
78 голосов
/ 17 октября 2013

Вы можете использовать squish метод. Он удаляет пробелы на обоих концах строки и группирует несколько пробелов в один пробел.

Например,

" a  b  c ".squish

приведет к:

"a b c"

Проверьте эту ссылку на api.rubyonrails.org .

EDIT: Работает только для ruby ​​на рельсах

46 голосов
/ 18 января 2012

Уже немного поздно, но любой другой, кто ищет эту страницу в Google, может заинтересоваться этой версией -

Если вы хотите очистить часть предварительно отформатированного текста, который пользователь мог каким-то образом вырезать и вставить в ваше приложение, но сохранить интервал между словами, попробуйте следующее:

content = "      a big nasty          chunk of     something

that's been pasted                        from a webpage       or something        and looks 

like      this

"

content.gsub(/\s+/, " ").strip

#=> "a big nasty chunk of something that's been pasted from a webpage or something and looks like this"
44 голосов
/ 08 мая 2013

Метод Ruby .strip выполняет PHP эквивалентный trim().

Чтобы удалить все пробелы:

"  leading    trailing   ".squeeze(' ').strip
=> "leading trailing"

@ ТАСС дал мне понять, что мой оригинальный ответ удаляет повторяющиеся буквы подряд - УДАЧИ! С тех пор я переключился на метод squish, который умнее в таких случаях при использовании Rails Framework.

require 'active_support/all'
"  leading    trailing   ".squish
=> "leading trailing"

"  good    men   ".squish
=> "good men"

Цитировать: http://apidock.com/rails/String/squish

25 голосов
/ 02 октября 2013
" Raheem Shaik ".strip

Удаляет пробелы слева и справа. Этот код даст нам: "Raheem Shaik"

20 голосов
/ 28 октября 2009

И не забудь:

$ s = "   I have white space   ".split
=> ["I", "have", "white", "space"]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...