Строки в языке Ruby
Строка является наиболее важным типом данным в языках программирования. Многие могут быть несогласны, но вполне очевидно, что компьютеры были созданы в качестве помощника человека. Человек в свою очередь воспринимает и понимает символьные данные.
Строка это набор символов. Строка в Ruby - объект. Именно этот факт и позволяет с легкостью выполнять различные операции над строками: конкатенация, анализ, выделение лексем и т.д.
Создать простейшую строку в Ruby можно заключив нужный текст в одинарные кавычки. Строки в одинарных кавычках воспринимаются интерпретатором буквально.
Экранирование в простейшей строке - возможно. Распознается только экранированная одинарная кавычка (\') и обратная косая черта (\\). Это очень полезно, когда необходимо в простейшей строке записать что-то содержащее одинарную кавычку или обратный слэш.
irb 2.6.0 :001 > full_name = 'Жанна д'Арк' 2.6.0 :002'> '
На третьей строчке мы допишем еще одну кавычку, чтобы интерпретатор IRB принял “законченное” выражение. Получим:
SyntaxError ((irb):1: syntax error, unexpected tCONSTANT, expecting end-of-input)
Такая запись привела к ошибке интерпретации нашего кода. Вторая одинарная кавычка будет считаться не орфографическим знаком в контексте нашей строки, а закрывающим элементом. Посмотрим на управляющие последовательности (\') и (\\), которые работают в строках обернутых в одинарные кавычки.
Чтобы предотвратить ошибку, мы можем использовать бэкслэш (\) для экранирования апострофа.
full_name = 'Жанна д\'Арк' puts full_name => "Жанна д'Арк"
Пример экранирования обратной строки:
quote_from_wikipedia = 'В математике обратная косая черта обозначает разность множеств: A \ B — множество элементов, которые входят в A, но не входят в B.'
quote_from_wikipedia = 'В математике обратная косая черта обозначает разность множеств: A \\ B — множество элементов, которые входят в A, но не входят в B.'
print quote_from_wikipedia В математике обратная косая черта обозначает разность множеств: A \ B — множество элементов, которые входят в A, но не входят в B.
Обратите внимание, что если вы забудете поставить обратную косую черту для экранирования - Ruby сам проведет эту работу:
quote_from_wikipedia = 'В математике обратная косая черта обозначает разность множеств: A \ B — множество элементов, которые входят в A, но не входят в B.' print quote_from_wikipedia В математике обратная косая черта обозначает разность множеств: A \ B — множество элементов, которые входят в A, но не входят в B.
Гибкость Ruby позволяет нам ошибаться, но это иногда запутывает. Многие правила, исключения и особенности нужно просто запоминать.
Строки в двойных кавычках более гибкие и имеют больше управляющих последовательностей в своем арсенале. Среди них и такие, как табуляция и перевод строки.
with_tab = "АбраТабТабРа: (\t)" # знак табуляции one_more_tab = with_tab = "АбраТабТабРа: \011” # альтернативный способ записи табуляции
Стоит отметить, что главной особенностью строки в двойных кавычках - возможность использовать выражения.