Курс по 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. Оригинален текст на английски

Преводи на тази страница: EnglishDeutschEspañolItalianoLatviešuNederlandsБългарскиРусскийУкраїнська