В Ruby иногда мне нужно удалить новый символ строки в начале строки. В настоящее время я сделал следующее. Я хочу знать, как это сделать. Спасибо.
s = "\naaaa\nbbbb"
s.sub!(/^\n?/, "")
В Ruby иногда мне нужно удалить новый символ строки в начале строки. В настоящее время я сделал следующее. Я хочу знать, как это сделать. Спасибо.
s = "\naaaa\nbbbb"
s.sub!(/^\n?/, "")
lstrip
кажется, что вы хотите (при условии сохранения пробела в пробеле):
>> s = "\naaaa\nbbbb" #=> "\naaaa\nbbbb"
>> s.lstrip #=> "aaaa\nbbbb"
Из документов:
Возвращает копию str с удалением ведущего пробела. Смотрите также Строка # rstrip и Строка #.
strip
удалит все конечные пробелы
s = "\naaaa\nbbbb"
s.strip!
Маленький взломать ведущие пробелы:
str = "\nmy string"
chomped_str = str.reverse.chomp.reverse
Итак, просто для пояснения, вы можете сделать это тремя способами: 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 для обрезки, но это было бы просто уродливее. Последствия производительности не так уж важны.
s.sub(/^[\n\r]*/, '')
Это удаляет ведущие символы новой строки (возврат каретки и линейные каналы, как в chomp), а не пробелы.
Не уверен, что это лучший способ, но вы можете попробовать:
s.reverse.chomp.reverse
если вы хотите оставить конечную новую строку (если она существует).
Это должно сработать для вас: s.strip
.
Способ сделать это для пробельных или небелых символов выглядит следующим образом:
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