Курс по Raku / Основи / Стрингове
Ескейпване на специални символи
Представете си, че искате да отпечатате етикет с цена и съхранявате както името на продукта, така и неговата цена в скаларни променливи?
my $product = 'Electricity';
my $price = 3.14;
Как да отпечатате етикета, ако цената трябва да бъде в долари? Очакваният изход е: Electricity costs $3.14
. Знакът за долар в низове с двойни кавички е индикатор за променлива, която трябва да бъде интерполирана. За да отпечатате самия символ $
, трябва да го избягате:
say "$product costs \$$price";
Разбира се, можете да използвате конкатенация на низове и да избегнете избягването на $
:
say $product ~ ' costs $' ~ $price;
Този вариант отпечатва точно същия низ, но интерполацията изглежда по-естествена и по-лесна за четене. Забележете, че символът $
не беше интерполиран, нито избягнат в низ с единични кавички: ' costs $'
. Това е основната разлика. Специалните символи в единични кавички се появяват както са.
Ето още няколко специални символа, които имат специално значение в низове с двойни кавички:
\$ |
Знак за долар |
\n |
Нов ред |
\r |
Връщане на каретката |
\t |
Хоризонтален табулатор |
\" |
Двойни кавички |
\\ |
Обратна наклонена черта |
Начинът, по който цитирате низа, определя как Raku третира специалните символи. Разгледайте тези два примера:
say 'One\nTwo';
say "Three\nFour";
Ако изпълните тази програма, ще видите, че първият низ се появява както е на един ред. Вторият низ беше разделен на две части:
One\nTwo
Three
Four
В двойни кавички, специалната последователност \n
беше обработена като символ за нов ред, докато в низ с единични кавички тя беше обикновена последователност от два символа: \
и n
.
Има интересен изключение за '
и \
. В единични кавички, можете да избягате единична кавичка, като я предшествате с друга \
:
say '\''; # '
Обратната наклонена черта също трябва да бъде избягната, ако след нея следва единична кавичка:
say 'a\b\c\\'; # a\b\c\
Практика
Попълнете теста, който обхваща съдържанието на тази тема.
Навигация по курса
← Стрингове / Кодова интерполация | Стрингове / Дължина на стринг →
💪 Or jump directly to the exercises to this section.
Тази страница е автоматично преведена с ChatGPT 4.0. Оригинален текст на английски
Преводи на тази страница: English • Deutsch • Español • Italiano • Latviešu • Nederlands • Български • Русский • Українська