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"
Данный текст является ознакомительным фрагментом.