Kurso de Raku / Esencoj / Stringoj

Eskapado de specialaj karakteroj

Imagu ke vi volas presi prezetiketon, kaj vi konservas kaj la nomon de la produkto kaj ĝian prezon en skalaj variabloj?

my $product = 'Electricity';
my $price = 3.14;

Kiel vi presas la etikedon se la prezo estas en dolaroj? La atendata rezulto estas: Electricity costs $3.14. Dolarsigno en duoble-cititaj ŝnuroj estas indikilo de variablo por esti interpolita. Por presi la $ karakteron mem, vi devas eskapi ĝin:

say "$product costs \$$price";

Kompreneble, vi povas uzi ŝnuran kunigon kaj eviti eskapi $:

say $product ~ ' costs $' ~ $price;

Ĉi tiu varianto presas ekzakte la saman ŝnuron, sed interpolado aspektas pli natura kaj pli facile legebla. Notu, ke la $ karaktero nek estis interpolita nek eskapita en unuoble-citita ŝnuro: ' costs $'. Tio estas la ĉefa diferenco. Specialaj karakteroj en unuoblaj citiloj aperas kiel ili estas.

Jen kelkaj pliaj specialaj karakteroj kiuj havas specialan signifon en duoble-cititaj ŝnuroj:

\$ Dolarsigno
\n Nova linio
\r Karet-retorno
\t Horizontala tabo
\" Duobla citilo
\\ Reenstreko

La maniero kiel vi citas la ŝnuron difinas kiel Raku traktas specialajn karakterojn. Konsideru ĉi tiujn du ekzemplojn:

say 'One\nTwo';
say "Three\nFour";

Se vi rulas ĉi tiun programon, vi vidos ke la unua ŝnuro aperas kiel estas en unu linio. La dua ŝnuro estis dividita en du pecojn:

One\nTwo
Three
Four

En duoblaj citiloj, speciala sekvenco \n estis traktita kiel nova linio karaktero, dum en ŝnuro en unuoblaj citiloj ĝi estis regula sekvenco de du karakteroj: \ kaj n.

Estas interesa escepto por ' kaj \. En unuoblaj citiloj, vi povas eskapi unuoblan citilon per prefikso kun alia \:

say '\''; # '

Reenstreko ankaŭ devas esti eskapita se unuobla citilo sekvas ĝin:

say 'a\b\c\\'; # a\b\c\

Praktiko

Plenumu la kvizon, kiu kovras la enhavon de ĉi tiu temo.

Kurso navigado

Stringoj / Koda interpolado   |   Stringoj / Stringa longo


💪 Or jump directly to the exercises to this section.

Ĉi tiu paĝo estas aŭtomate tradukita per ChatGPT 4o. Originala angla teksto

Tradukoj de ĉi tiu paĝo: EnglishDeutschEspañolItalianoLatviešuNederlandsБългарскиРусскийУкраїнська