Cursus Raku / Reguliere expressies en grammatica’s / Reguliere expressies / Substitutie en vervanging
De substitutieoperator
De substitutieoperator is s///. Hij ziet eruit als een
match met een tweede vak: het patroon komt tussen de eerste twee schuine
strepen en de vervangende tekst tussen de laatste twee:
my $s = 'hello world';
$s ~~ s/world/Raku/;
say $s; # hello RakuSubstitutie verandert de variabele ter plaatse, dus
$s zelf wordt bijgewerkt. De tekst in het vervangingsdeel
is letterlijk — je zet hem niet tussen aanhalingstekens.
Net als bij matchen raakt substitutie standaard alleen het
eerste voorkomen. Voeg het bijwoord :g toe
om elk voorkomen te vervangen:
my $s = 'a-b-c';
$s ~~ s:g/'-'/_/;
say $s; # a_b_cAls je het origineel wilt behouden en in plaats van ter plaatse te
wijzigen een veranderde kopie wilt maken, gebruik je de
operator S/// met een hoofdletter: hij
voert de substitutie uit en geeft de veranderde string terug, waarbij
het origineel ongemoeid blijft. Omdat hij geen variabele ter plaatse
bijwerkt, richt je hem met given op een variabele in plaats
van met ~~:
my $orig = 'color';
say S:g/o/0/ given $orig; # c0l0r
say $orig; # color($orig ~~ S/// schrijven waarschuwt je om in plaats
daarvan given te gebruiken — bij S/// valt er
niets ter plaatse te wijzigen.)
Hetzelfde niet-destructieve gedrag is ook als methode beschikbaar,
.subst, die een nieuwe string teruggeeft:
my $orig = 'color';
say $orig.subst('o', '0', :g); # c0l0r
say $orig; # colorPraktijk
Maak de 1 quiz over de inhoud van dit onderwerp.
Cursusnavigatie
← Substitutie en vervanging | Quiz — De s///-operator →
💪 Of ga direct naar de oefeningen in deze
sectie.