Подтвердить что ты не робот

В Ruby, какой самый простой способ "chomp" в начале строки, а не в конце?

В Ruby иногда мне нужно удалить новый символ строки в начале строки. В настоящее время я сделал следующее. Я хочу знать, как это сделать. Спасибо.

s = "\naaaa\nbbbb"
s.sub!(/^\n?/, "")
4b9b3361

Ответ 1

lstrip кажется, что вы хотите (при условии сохранения пробела в пробеле):

>> s = "\naaaa\nbbbb" #=> "\naaaa\nbbbb"
>> s.lstrip #=> "aaaa\nbbbb"

Из документов:

Возвращает копию str с удалением ведущего пробела. Смотрите также Строка # rstrip и Строка #.

http://ruby-doc.org/core-1.9.3/String.html#method-i-lstrip

Ответ 2

strip удалит все конечные пробелы

s = "\naaaa\nbbbb"
s.strip!

Маленький взломать ведущие пробелы:

str = "\nmy string"
chomped_str = str.reverse.chomp.reverse

Ответ 3

Итак, просто для пояснения, вы можете сделать это тремя способами: sub, reverse.chomp.reverse и lstrip.

Я бы рекомендовал против sub, потому что он немного менее читабельный, но также и потому, что он работает: создав новую строку, которая наследуется от вашей старой строки. Кроме того, вам нужно регулярное выражение для чего-то довольно простого.

Итак, вы доходите до reverse.chomp.reverse и lstrip. Скорее всего, вы хотите lstrip, потому что это немного быстрее, но имейте в виду, что операции strip не совпадают с операциями chomp. strip удалит все ведущие строки и пробелы:

"\n  aaa\nbbb".reverse.chomp.reverse  # => "  aaa\nbbb"
"\n  aaa\nbbb".lstrip                 # => "aaa\nbbb"

Если вы хотите, чтобы вы удалили только одного символа и что это определенно новая строка, используйте решение reverse.chomp.reverse. Если вы рассматриваете все ведущие символы перевода строки и пробела, перейдите к lstrip.

Один случай, который я могу придумать для использования регулярных выражений, - это если у вас есть неизвестное число \r и \n в начале и вы хотите обрезать их все, но не касаться каких-либо пробелов. Вы могли бы использовать цикл и больше методов String для обрезки, но это было бы просто уродливее. Последствия производительности не так уж важны.

Ответ 4

s.sub(/^[\n\r]*/, '')

Это удаляет ведущие символы новой строки (возврат каретки и линейные каналы, как в chomp), а не пробелы.

Ответ 5

Не уверен, что это лучший способ, но вы можете попробовать:

s.reverse.chomp.reverse

если вы хотите оставить конечную новую строку (если она существует).

Ответ 6

Это должно сработать для вас: s.strip.

Ответ 7

Способ сделать это для пробельных или небелых символов выглядит следующим образом:

s = "\naaaa\nbbbb"
s.slice!("\n") # returns "\n" but s also has the first newline removed.
puts s # shows s has the first newline removed