AABBCCDDEE
aabbccddee
AaBbCcDdEe
Aabbccddee
a
aAbBcCdDeE
Довольно обычные средства. Как видно из строки puts 'a'.capitalize, метод capitalize переводит в заглавную только первый символ, а не первую букву. И также, как мы уже видели раньше, при вызове всех этих методов, значение letters остаётся неизменным. Мне не хотелось бы слишком вас мучить этим, но это важно понимать. Есть ещё несколько методов, которые действительно изменяют ассоциированные с ними объекты, но мы их пока что не видели и не увидим ещё некоторое время.
[Чтобы преобразовывать строки с русскими буквами потребуется установить одну из дополнительных библиотек, например, active_support, и тогда можно будет воспользоваться методами «cTpoKa».chars.downcase, «cTpoKa».chars.upcase, «cTpoKa».chars.capitalize. –
Остальные из этих забавных строковых методов, рассматриваемых нами, предназначены для визуального форматирования. Первый из них, center, добавляет пробелы в начало и в конец строки, чтобы отцентрировать её. Однако, также как вам требовалось указать методу puts, что вы хотите напечатать, а методу +, что вы хотите сложить, вам нужно указать методу center, какой ширины должна быть ваша отцентрированная строка. Так, если бы мне захотелось расположить по центру строки стихотворения, я бы сделал это примерно так [вместо оригинального английского шестистишия приводится другой подходящий лимерик Эдварда Лира в переводе Е. В. Клюева –
lineWidth = 50
puts (
'Вот вам юная мисс из России:'
.center(lineWidth))
puts (
'Визг её был ужасен по силе.'
.center(lineWidth))
puts (
'Он разил, как кинжал, – '
.center(lineWidth))
puts (
'Так никто не визжал,'
.center(lineWidth))
puts('Как визжала та Мисс из России.'
.center(lineWidth))
Вот вам юная мисс из России:
Визг её был ужасен по силе.
Он разил, как кинжал, – так никто не визжал,
Как визжала та Мисс из России.
Хммм… Не думаю, что этот детский стишок звучит именно так, но мне просто лень уточнить по книге. (Кроме того, я хотел выровнять части строк программы, где встречается.center(lineWidth), поэтому я вставил эти лишние пробелы перед строками. Это сделано просто потому, что мне кажется, что так красивее. У программистов часто вызывает сильные чувства обсуждение того, что в программе является красивым, и они часто расходятся во мнениях об этом. Чем больше вы программируете, тем больше вы следуете своему собственному стилю.) Что касается разговоров о лени, то лень в программировании – это не всегда плохо. Например, видите, что я сохранил ширину стихотворения в переменной lineWidth? Это для того, чтобы, если я захочу позже вернуться к программе и сделать стих шире, мне нужно будет изменить только самую верхнюю строку программы вместо того, чтобы менять каждую из строк, где есть центрирование. При достаточно длинном стихотворении это может сэкономить мне немало времени. Вот такая разновидность лени – это действительно добродетель в программировании. [Однако автор не поленился назвать эту переменную достаточно длинным, но зато осмысленным именем lineWidth, так как он сознаёт, насколько важно для читающего программу правильно понимать назначение переменных. –
Так вот, о центрировании… Как вы могли заметить, оно не столь прекрасно, как его мог бы сделать текстовый процессор. Если вы действительно хотите идеальное центрирование (и, возможно, более симпатичный шрифт), тогда вы просто должны использовать текстовый процессор! Ruby – это удивительный инструмент, но нет ни одного инструмента идеального для любой работы.
Два других метода форматирования строк – это ljust и rjust, названия которых обозначают left justify (выровнять влево) и right justify (выровнять вправо). Они похожи на center за исключением того, что они добавляют к строке пробелы соответственно с левой или с правой стороны. Давайте посмотрим все три метода в действии:
lineWidth = 40 str = '–-> текст <--' puts str.ljust lineWidth puts str.center lineWidth puts str.rjust lineWidth
puts str.ljust (lineWidth/2) + str.rjust (lineWidth/2)
–>
текст
<–
–-> текст <--
–- >
текст
< –
–>
текст
<–
–- >
текст
< –
• Напишите программу «Злой Начальник». Он должен грубо спрашивать, чего вы хотите. Что бы вы ему ни ответили, Злой Начальник должен орать вам это же самое в ответ, а затем увольнять вас. Например, если вы введёте: Я хочу повышения зарплаты.,