Курс по Raku / Регулярни изрази и граматики / Регулярни изрази / Заместване и замяна
Операторът за заместване
Операторът за заместване е s///. Той изглежда като
съпоставяне с второ поле: шаблонът стои между първите две наклонени
черти, а текстът на замяната — между последните две:
my $s = 'hello world';
$s ~~ s/world/Raku/;
say $s; # hello RakuЗаместването променя променливата на място, така че
се обновява самата $s. Текстът в частта за замяна е
буквален — не го поставяте в кавички.
Както и съпоставянето, заместването по подразбиране засяга само
първото появяване. Добавете наречието :g,
за да замените всяко появяване:
my $s = 'a-b-c';
$s ~~ s:g/'-'/_/;
say $s; # a_b_cАко искате да запазите оригинала и да получите променено
копие, вместо да променяте на място, използвайте
оператора S/// с главна буква: той
извършва заместването и връща променения низ, оставяйки оригинала
недокоснат. Понеже той не обновява променлива на място, насочете го към
нея с given, а не с ~~:
my $orig = 'color';
say S:g/o/0/ given $orig; # c0l0r
say $orig; # color(Записът $orig ~~ S/// ви предупреждава да използвате
given — при S/// няма какво да се променя на
място.)
Същото неразрушително поведение е налично и като метод —
.subst, — който връща нов низ:
my $orig = 'color';
say $orig.subst('o', '0', :g); # c0l0r
say $orig; # colorПрактика
Направете 1 тест върху съдържанието на тази тема.
Навигация в курса
← Заместване и замяна | Тест — Операторът s/// →
💪 Или преминете направо към упражненията в този
раздел.