Вход/Регистрация
Программирование на языке Ruby
вернуться

Фултон Хэл

Шрифт:

a = s1.count("с") # 1

b = s1.count("bdr") # 5

Строковый параметр ведет себя как простое регулярное выражение. Если он начинается с символа

^
, то берется дополнение к списку:

c = s1.count("^а") # 6

d = s1.count ("^bdr") # 6

Дефис обозначает диапазон символов:

e = s1.count("a-d") # 9

f = s1.count("^a-d") # 2

2.29. Обращение строки

Для обращения строки служит метод

reverse
(или его вариант для обращения «на месте»
reverse!
):

s1 = "Star Trek"

s2 = s1.reverse # "kerT ratS"

si.reverse! # si теперь равно "kerT ratS"

Пусть требуется обратить порядок слов (а не символов). Тогда можно сначала воспользоваться методом

String#split
, который вернет массив слов. В классе
Array
тоже есть метод
reverse
, поэтому можно обратить массив, а затем с помощью метода
join
объединить слова в новую строку:

phrase = "Now here's a sentence"

phrase.split(" ").reverse.join(" ")

# "sentence a here's Now"

2.30. Удаление дубликатов

Цепочки повторяющихся символов можно сжать до одного методом

squeeze
:

s1 = "bookkeeper"

s2 = s1.squeeze # "bokeper"

s3 = "Hello..."

s4 = s3.squeeze # "Helo."

Если указан параметр, то будут удаляться только дубликаты заданных в нем символов:

s5 = s3.squeeze(".") # "Hello."

Этот параметр подчиняется тем же правилам, что и параметр метода

count
(см. раздел 2.28), то есть допускаются дефис и символ
^
. Имеется также метод
squeeze!
.

2.31. Удаление заданных символов

Метод

delete
удаляет из строки те символы, которые включены в список, переданный в качестве параметра:

s1 = "To be, or not to be"

s2 = s1.delete("b") # "To e, or not to e"

s3 = "Veni, vidi, vici!"

s4 = s3.delete(",!") # "Veni vidi vici"

Этот параметр подчиняется тем же правилам, что и параметр метода

count
(см. раздел 2.28), то есть допускаются символы
–
(дефис) и
^
(каре). Имеется также метод
delete!
.

2.32. Печать специальных символов

Метод

dump
позволяет получить графическое представление символов, которые обычно не печатаются вовсе или вызывают побочные эффекты:

s1 = "Внимание" << 7 << 7 << 7 # Добавлено три символа ASCII BEL.

puts s1.dump # Печатается: Внимание\007\007\007

s2 = "abc\t\tdef\tghi\n\n"

puts s2.dump # Печатается: abc\t\tdef\tghi\n\n

s3 = "Двойная кавычка: \""

puts s3.dump # Печатается: Двойная кавычка: \"

При стандартном значении переменной

$KCODE
метод
dump
дает такой же эффект, как вызов метода
inspect
для строки. Переменная
$KCODE
рассматривается в главе 4.

2.33. Генерирование последовательности строк

Изредка бывает необходимо получить «следующую» строку. Так, следующей для строки

"aaa"
будет строка
"aab"
(затем
"aac"
,
"aad"
и так далее). В Ruby для этой цели есть метод
succ
:

droid = "R2D2"

improved = droid.succ # "R2D3"

pill = "Vitamin B"

pill2 = pill.succ # "Vitamin C"

He рекомендуется применять этот метод, если точно не известно, что начальное значение предсказуемо и разумно. Если начать с какой-нибудь экзотической строки, то рано или поздно вы получите странный результат.

Существует также метод

upto
, который в цикле вызывает
succ
, пока не будет достигнуто конечное значение:

  • Читать дальше
  • 1
  • ...
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: