[topic] すべて置換

文字列中のマッチする部分をすべて置換する方法について。

Posted feedbacks - Perl

Perlではいくつかやり方がありますが、単純に1文字単位の置換では、tr/~/~/ を使えます。 また、文字列の一部を置き換えるのに substrを左辺値に使う方法もあります。 もちろん正規表現で、s/~/~/g で全て置換を行えます。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
# tr
$date = "2007-10-30";
$date =~ tr#-#/#;
print $date, "\n";

# substr
sub replace {
    my ($str, $target, $replace) = @_;
    for (my $i = index($str, $target); $i >= 0; $i = index($str, $target, $i + 1)) {
        substr($str, $i, length($target)) = $replace;
    }
    $str;
}

$date = "2007-10-30";
print replace($date, "-", "/"), "\n";

# s///g
$date = "2007-10-30";
$date =~ s/\d+/*/g;
print $date, "\n";

Index

Feed

Other

Link

Pathtraq

loading...