0

在 PHP 中,strtr可以接受数组的输入并替换字符串中所有出现的键,最长的键将首先尝试。

Perl 中是否有等价的功能?

4

2 回答 2

7

是的,简单的正则表达式:

# Where %h contains your key => value mappings
my $keys = join '|', sort {length($b) <=> length($a)} keys %h;
$a =~ s/($keys)/$h{$1}/g;
于 2011-02-20T10:49:40.460 回答
3

与其手动构建正则表达式进行评估,不如使用Data::Munge的 list2re 函数,如下所示:

my $re = list2re sort {length($b) <=> length($a)} keys %h;
$a =~ s/($re)/$h{$1}/g;
于 2011-02-20T23:35:22.573 回答