在 PHP 中,strtr
可以接受数组的输入并替换字符串中所有出现的键,最长的键将首先尝试。
Perl 中是否有等价的功能?
是的,简单的正则表达式:
# Where %h contains your key => value mappings
my $keys = join '|', sort {length($b) <=> length($a)} keys %h;
$a =~ s/($keys)/$h{$1}/g;
与其手动构建正则表达式进行评估,不如使用Data::Munge的 list2re 函数,如下所示:
my $re = list2re sort {length($b) <=> length($a)} keys %h;
$a =~ s/($re)/$h{$1}/g;