Назад в блог

Работа со строками в Ruby

Работа со строками в Ruby

Ruby — это интерпретируемый, динамический, рефлексивный, объектно-ориентированный язык программирования. Разработанный Юкихиро Мацумото, Ruby ориентирован на простоту и продуктивность. Элегантный синтаксис позволяет разработчикам легче читать и писать код.

В этом руководстве мы будем работать со строками в Ruby.

Предварительные требования

Для выполнения шагов, описанных в этом руководстве, вам понадобятся следующие компоненты:

Строковый тип данных

В программировании строка — это распространенный тип данных, который поддерживается каждым современным языком программирования. Он характеризуется последовательностью символов. Вся последовательность символов рассматривается как единый элемент данных. Строка может содержать буквы, цифры и специальные символы/знаки.

Ruby, будучи чисто объектно-ориентированным языком программирования, относится к строкам как к объектам. В отличие от многих других языков, строки в Ruby являются изменяемыми. По сути, значение строки можно изменить на месте.

Шаг 1 – Создание и вывод строк

В Ruby строки заключаются либо в одинарные кавычки ( ') либо в двойные кавычки ( "). Ниже приведены две допустимые строки в Ruby:

Для вывода любой информации на экран консоли в Ruby есть метод print:

Время применить это на практике. Создайте новый файл Ruby practice.rb и введите следующий код:

Запустите код:

Strings in Ruby 1

Как и ожидалось, команда print выводит переданные строки. Если мы хотим вывести строки на отдельных строках, лучше использовать puts взамен. Обновите код:

Затем снова запустите код:

Strings in Ruby 2

Шаг 2 – Строковые переменные

Переменные — это имена, указывающие на определенное место в памяти компьютера, где хранится значение. Мы можем сохранить нужное значение в переменной и использовать его позже.

В Ruby для объявления строковой переменной укажите имя переменной и присвойте ей строковое значение:

Запишите следующий код в practice.rb:

Запустите код:

Здесь:

  • Мы определили две переменные first_half и second_half, каждой из которых присвоено строковое значение.
  • Метод puts выводит значение переменных.

Шаг 3 – Конкатенация строк

Путем конкатенации мы можем взять несколько строк и объединить их вместе для создания новой строки. Конкатенация строк обозначается оператором конкатенации ( +). Обратите внимание, что этот символ также является оператором сложения при работе с арифметическими операциями.

Давайте попробуем выполнить конкатенацию строк, которые мы объявили к этому моменту:

Запустите код:

Как показывает вывод, конкатенация не добавляет никаких дополнительных символов между строками. Вот почему fox и jumps слились воедино. Мы можем исправить это, добавив пробел после fox:

Запустите код:

Теперь вывод выглядит лучше.

Конкатенация строк также работает с переменными. Посмотрите на следующий пример:

Strings in Ruby 3

Run the code:

The next example demonstrates a long chain of concatenation:

Strings in Ruby 4

Run the code:

До сих пор мы имели дело только со строковыми переменными. Что если бы существовали другие типы переменных? Следующая программа тестирует этот сценарий:

Strings in Ruby 5

При попытке запустить эту программу Ruby выдаст сообщение об ошибке:

Однако мы можем преобразовать целое число в строку, чтобы избежать этой проблемы:

Strings in Ruby 6

Здесь:

  • Метод to_s преобразует значение переменной в строку.

Преобразование чисел в строки — обычное дело при работе с такими элементами, как почтовые индексы, валюта, номера телефонов и другие числовые данные.

Шаг 4 – Интерполяция строк

Хотя конкатенация строк — мощная функция, она может легко стать запутанной. Во многих ситуациях вы, вероятно, обнаружите, что пропустили оператор конкатенации ( +), что приведет к большой головной боли. Более того, при работе с различными типами данных их сначала необходимо преобразовать в строку. К счастью, Ruby предлагает другие способы внедрения значений переменных в строку с помощью функции интерполяция строк.

Вот как это выглядит. Например, вместо использования:

Мы будем использовать:

Хотя синтаксис может показаться немного странным, он значительно упрощает код. Нет необходимости вручную вызывать метод to_s для преобразования значения переменной в строку.

Давайте воспользуемся этой новой техникой, чтобы обновить наш предыдущий код:

Strings in Ruby 7

Run the code:

Шаг 5 – Строковые литералы и строковые значения

Обратите внимание, что строки, объявленные в коде, всегда окружены кавычками. Однако при выводе результата на экран консоли символы кавычек отсутствуют. Между ними явно есть различие.

  • Строковый литерал: это строка, записанная в исходном коде (включая кавычки).
  • Строковое значение: это значение, которое выводится на экран (без кавычек).

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

Его строковым значением будет привет мир.

Шаг 6 – Экранирование кавычек и апострофов

Как мы показали, кавычки и апострофы используются для обозначения строк в исходном коде. Это создает проблему: вы не можете использовать их непосредственно в строке. В противном случае это приведет к проблемам. Следующий код демонстрирует это:

Strings in Ruby 8

Существуют различные тактики для обхода этой проблемы.

  • Использование альтернативного синтаксиса строк

Это самый простой способ обойти проблему. Если вашей строке требуются одинарные кавычки, используйте двойные кавычки в строковом литерале (и наоборот).

Давайте исправим предыдущий пример:

Другим примером может быть:

However, it’s not going to work in every situation. For example:

  • Использование экранирующих символов

Символ обратного слэша ( \) часто называют экранирующим символом. Он не позволяет Ruby интерпретировать следующий символ буквально. Давайте исправим предыдущий пример. Используйте обратный слэш, чтобы Ruby не интерпретировал внутренние двойные кавычки как литералы:

  • Использование альтернативного синтаксиса

До сих пор мы работали только с одинарными и двойными кавычками для обозначения строкового литерала. Однако предыдущие примеры наглядно демонстрируют, как быстро все может выйти из-под контроля. Чтобы решить эту проблему, мы можем вообще отказаться от кавычек и использовать совершенно другой символ для обозначения начала и конца строки.

Посмотрите на следующий пример:

Здесь:

    • Символ % определяет следующий символ ( $, в данном случае) как разделитель строки.
    • Строковый литерал здесь — это $the quick brown fox said, "I jumped over the lazy dog"$.

Давайте применим это на практике:

Здесь строка фактически обрабатывается следующим образом:

Однако это снова приводит к проблеме экранирования разделителя, если он используется в строке. Один из способов избежать этого — использовать символы, которые обычно не встречаются в строках. Такие символы могут включать фигурные скобки, квадратные скобки и т. д.:

Это также отлично работает с интерполяцией строк:

Также часто используются %Q{} и %q{} для определения строк в программах на Ruby. Здесь %Q{} действует как двойные кавычки, а %q{} действует как одинарные кавычки.

Шаг 7 – Переносы строк и длинные строки

При работе со строками могут возникнуть ситуации, когда вам понадобится добавить в строку символ новой строки или возврат каретки. Мы можем сделать это, введя управляющие символы \n (новая строка) и \r (возврат каретки).

Посмотрите на следующий пример:

Строковый литерал выглядит запутанным, верно? Давайте перепишем его для лучшей читаемости:

Вместо того чтобы вручную объявлять символы новой строки, мы также можем использовать следующую структуру:

Strings in Ruby 8

Strings in Ruby 9

При таком методе в строке сохраняются все пробелы. Однако это портит вывод. Удалите лишние пробелы, чтобы исправить это:

Strings in Ruby 10

Хотя проблема с пробелами была решена, это снижает читаемость кода. Мы можем исправить эту проблему, внедрив heredoc, термин для многострочных строковых литералов. Обновленный код будет выглядеть следующим образом:

Strings in Ruby 11

Strings in Ruby 12

Начиная с Ruby версии 2.3 и выше, доступна еще одна функция под названием squiggly heredoc синтаксис. Он удаляет начальные пробелы в строках. Чтобы выразить squiggly heredoc, замените дефис ( -) на тильду ( ~):

Strings in Ruby 13

Шаг 8 – Дублирование строк

В некоторых ситуациях может возникнуть необходимость повторить строку несколько раз. Ruby позволяет дублировать строки различными способами.

Один из таких методов — использование оператора *. Обычно он используется как оператор умножения при работе с числами. Однако при работе со строками он становится оператором дублирования строк, повторяя одну строку столько раз, сколько необходимо. Количество повторений должно быть целым числом.

В следующем примере текст Boris будет повторен 5 раз:

Strings in Ruby 14

Используя эту функцию, мы можем создавать классные рисунки ASCII. Посмотрите следующий пример:

Заключение

Строки в программировании имеют важнейшее значение. В этом руководстве показана работа со строками в Ruby. Мы узнали, как создавать строки и выполнять различные операции, такие как конкатенация, обработка символов новой строки, кавычек и т. д. С помощью интерполяции строк мы также узнали, как лучше integrarate значения переменных в строки. Используя оператор дублирования строк, мы также можем повторять одну строку несколько раз.

Хотя Ruby сам по себе является отличным языком программирования, его часто используют в сочетании с фреймворком Rails. Ruby on Rails — это веб-фреймворк с открытым исходным кодом. Узнайте больше об установке Ruby on Rails на Ubuntu. Тем не менее, Ruby также может работать с другими приложениями, такими как MySQL и PostgreSQL.

Приятного программирования!

author

Preslav Dobrev

Автор · CloudSigma

Preslav Dobrev — креативный дизайнер в CloudSigma, сосредоточенный на формировании последовательного корпоративного образа с помощью традиционных и инновационных маркетинговых каналов. Он умело сочетает художественное видение со стратегическим маркетингом, создавая убедительные истории бренда.

Комментарии

Комментариев пока нет. Будьте первым.