Kurso de Raku / Regulesprimoj kaj gramatikoj / Regulesprimoj / Anstataŭigo kaj interŝanĝo

La operatoro de anstataŭigo

La operatoro de anstataŭigo estas s///. Ĝi aspektas kiel kongruo kun dua fako: la ŝablono iras inter la unuaj du oblikvoj kaj la anstataŭa teksto inter la lastaj du:

my $s = 'hello world';
$s ~~ s/world/Raku/;
say $s; # hello Raku

Anstataŭigo ŝanĝas la variablon surloke, do $s mem estas ĝisdatigita. La teksto en la anstataŭa parto estas laŭlitera — vi ne metas ĝin en citilojn.

Kiel kongruigo, anstataŭigo tuŝas nur la unuan aperon defaŭlte. Aldonu la adverbon :g por anstataŭigi ĉiun aperon:

my $s = 'a-b-c';
$s ~~ s:g/'-'/_/;
say $s; # a_b_c

Se vi volas konservi la originalon kaj produkti ŝanĝitan kopion anstataŭ modifi surloke, uzu la majusklan operatoron S///: ĝi faras la anstataŭigon kaj redonas la ŝanĝitan ĉenon, lasante la originalon netuŝita. Ĉar ĝi ne ĝisdatigas variablon surloke, direktu ĝin al unu per given anstataŭ ~~:

my $orig = 'color';
say S:g/o/0/ given $orig; # c0l0r
say $orig;                # color

(Skribi $orig ~~ S/// avertas vin uzi given anstataŭe — ĉe S/// estas nenio por modifi surloke.)

La sama nedetrua konduto ankaŭ disponeblas kiel metodo, .subst, kiu redonas novan ĉenon:

my $orig = 'color';
say $orig.subst('o', '0', :g); # c0l0r
say $orig;                     # color

Praktiko

Vin atendas 1 kvizo pri la enhavo de ĉi tiu temo.

Kursa navigado

Anstataŭigo kaj interŝanĝo   |   Kvizo — La operatoro s///


💪 Aŭ iru rekte al la ekzercoj de ĉi tiu sekcio.