2.18. Удаление хвостовых символов новой строки и прочих

2.18. Удаление хвостовых символов новой строки и прочих

Часто бывает необходимо удалить лишние символы в конце строки. Типичный пример — удаление символа новой строки после чтения строки из внешнего источника.

Метод chop удаляет последний символ строки (обычно это символ новой строки). Если перед символом новой строки находится символ перевода каретки ( ), он тоже удаляется. Причина такого поведения заключается в том, что разные операционные системы неодинаково трактуют понятие «новой строки». В UNIX-подобных системах новая строка представляется символом . А в DOS и Windows для этой цели используется пара символов .

str = gets.chop # Прочитать, удалить символ новой строки.

s2 = "Some string " # "Some string" (нет символа новой строки).

s3 = s2.chop! # s2 теперь тоже равно "Some string".

s4 = "Other string "

s4.chop! # "Other string" (нет символа новой строки).

Обратите внимание, что при вызове варианта chop! операнд-источник модифицируется.

Важно еще отметить, что последний символ удаляется, даже если это не символ новой строки:

str = "abcxyz"

s1 = str.chop # "abcxy"

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

str = "abcxyz"

str2 = "123 "

str3 = "123 "

str4 = "123 "

s1 = str.chomp  # "abcxyz"

s2 = str2.chomp # "123"

# Если установлен стандартный разделитель записей, то удаляется не только

# , но также и .

s3 = str3.chomp # "123"

s4 = str4.chomp # "123"

Как и следовало ожидать, имеется также метод chomp! для замены «на месте». Если методу chomp передана строка-параметр, то удаляются перечисленные в ней символы, а не подразумеваемый по умолчанию разделитель записей. Кстати, если разделитель записей встречается в середине строки, то он не удаляется:

str1 = "abcxyz"

str2 = "abcxyz"

s1 = str1.chomp("yz") # "abcx"

s2 = str2.chomp("x")  # "abcxyz"

Данный текст является ознакомительным фрагментом.