Неявные и явные преобразования

августа 6, 2008

На первый взгляд, методы to_s и to_str могут вызвать недоумение. То оба преобразуют объект в строковое представление, действительно?
Однако есть и различия. Во-первых, любой объект в принципе можно когда-то преобразовать в строку, затем почти все системные классы обладают методом to_s. А метод to_str в системных классах не реализуется вовек. Точно правило, метод to_str применяется для объектов, [...]

Читать далее →

Преобразование символов в коды ASCII и обратно

августа 6, 2008

В Ruby символ представляется целым числом. Это поведение изменится в версии 2.0, а возможно и раньше. В будущем предполагается хранить символы в виде односимвольных строк:
str = “Martin”
print str[0] # 77
Если в конец строки дописывается объект типа Fixnum, то он предварительно;
преобразуется в символ:
str2 = str

Читать далее →

Управление регистром

июня 25, 2008

В классе string есть множество методов управления регистром. В этом разделе мы
приведем их краткий обзор.
Метод downcase переводит символы всей строки в нижний регистр, а метод
upcase - в верхний:

si = “Бостонское чаепитие”
s2 = si.downcase # “бостонское чаепитие”
s3 = s2.upcase # “БОСТОНСКОЕ ЧАЕПИТИЕ”
Метод capitalize представляет первый символ строки в верхнем регистре, а
все остальные - в нижнем:

s4 = [...]

Читать далее →

Форматирование строк

июня 25, 2008

В Ruby, как и в языке С, для этой цели существует метод sprintf. Он принимает строку и список выражений и возвращает строку. Набор спецификаторов в форматной строке почти ничем отличается от принятого в функции sprintf (или printf)из библиотеки С.

name = “Боб”
age =28
str = sprintf(”Привет, %s… Похоже, тебе %d лет.”, name, age)
Спрашивается, зачем нужен этот метод, [...]

Читать далее →

Специализированное сравнение строк

июня 25, 2008

В язык Ruby уже встроен механизм сравнения строк: строки сравниваются в привычном
лексикографическом порядке (то есть на основе упорядочения, присущего
данному набору символов). Но при желании можно задать собственные правила
сравнения любой сложности.
Предположим, например, что мы хотим игнорировать английские артикли а,
an и the, если они встречаются в начале строки, а также не обращать внимания на
большинство знаков препинания. Для [...]

Читать далее →

Символы как метазначения

июня 18, 2008

Мы нередко пользуемся исключениями, чтобы уйти от кодов возврата. Но никто не мешает возвращать коды ошибки, если вам так хочется. К тому же в Ruby метод может возвращать более одного значения.
В таком механизме часто возникает необходимость. Когда-то символ NUL кода ASCII вообще не считался символом. В языке С есть понятие нулевого указателя (null), в Pascal [...]

Читать далее →

Разбиение строк на лексемы

июня 17, 2008

Метод split разбивает строку на части и возвращает массив лексем. Ему передаются целых два параметра: разделитель и максимальное возможное целое число полей.
По умолчанию разделителем является пробел, а точнее, значение специальном
переменной $,- или ее английсого эквивалента $field_separator. Если же первым
параметром задана какая-нибудь строка, то она и будет использоваться в качестве
разделителя лексем.
si = “Была темная грозовая ночь.”
words [...]

Читать далее →

Получение длины строки

июня 17, 2008

Для получения длины строки используется метод length. У него есть синоним size.
str1 = ‘Вася’
x = str1.length # 4
str2 = ‘Пупкин’
x = str2.size # 6

Читать далее →

Альтернативная нотация для представления строк

июня 17, 2008

Иногда встречаются строки, в которых много метасимволов, например одиночных и двойных кавычек и т. д. В этом случае можно воспользоваться конструкциями %q и %q. Вслед за ними должна идти строка, обрамленная с обеих сторон символами-ограничителями; лично я предпочитаю квадратные скобки ([ ]).
При этом %q ведет себя как одиночные кавычки, a %Q - как двойные.

S1 = [...]

Читать далее →