Selectively replace multiple instances of a character within a string: Difference between revisions

Content added Content deleted
(→‎{{header|Lambdatalk}}: adding a better one)
m (putting Lambdatalk at the right place, after Julia and before Perl)
Line 147: Line 147:
println("abracadabra -> ", trstring("abracadabra", rep))
println("abracadabra -> ", trstring("abracadabra", rep))
</lang>{{out}}Same as Perl.
</lang>{{out}}Same as Perl.

=={{header|Perl}}==
<lang perl>use strict;
use warnings;
use feature 'say';

sub transmogrify {
my($str, %sub) = @_;
for my $l (keys %sub) {
$str =~ s/$l/$_/ for split '', $sub{$l};
$str =~ s/_/$l/g;
}
$str
}

my $word = 'abracadabra';
say "$word -> " . transmogrify $word, 'a' => 'AB_CD', 'r' => '_F', 'b' => 'E';</lang>
{{out}}
<pre>abracadabra -> AErBcadCbFD</pre>


=={{header|Lambdatalk}}==
=={{header|Lambdatalk}}==
Line 273: Line 254:
(AErBcadCbFD)
(AErBcadCbFD)
</lang>
</lang>

=={{header|Perl}}==
<lang perl>use strict;
use warnings;
use feature 'say';

sub transmogrify {
my($str, %sub) = @_;
for my $l (keys %sub) {
$str =~ s/$l/$_/ for split '', $sub{$l};
$str =~ s/_/$l/g;
}
$str
}

my $word = 'abracadabra';
say "$word -> " . transmogrify $word, 'a' => 'AB_CD', 'r' => '_F', 'b' => 'E';</lang>
{{out}}
<pre>abracadabra -> AErBcadCbFD</pre>




=={{header|Phix}}==
=={{header|Phix}}==