在 Perl 中翻译字符串

发布于 2024-10-18 04:10:09 字数 184 浏览 6 评论 0原文

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

Perl 中有等效的函数吗?

In PHP, strtr can accept an input of array and replace all occurrence of key within the string, and the longest keys will be tried first.

Is there equivalant function in Perl?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

够运 2024-10-25 04:10:09

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

# Where %h contains your key => value mappings
my $keys = join '|', sort {length($b) <=> length($a)} keys %h;
$a =~ s/($keys)/$h{$1}/g;

Yep, simple regex:

# Where %h contains your key => value mappings
my $keys = join '|', sort {length($b) <=> length($a)} keys %h;
$a =~ s/($keys)/$h{$1}/g;
清浅ˋ旧时光 2024-10-25 04:10:09

使用 Data::Munge 的 list2re 函数,而不是手动构建正则表达式来评估像这样:

my $re = list2re sort {length($b) <=> length($a)} keys %h;
$a =~ s/($re)/$h{$1}/g;

Rather than manually building up a regex to evaluate, use Data::Munge's list2re function like this:

my $re = list2re sort {length($b) <=> length($a)} keys %h;
$a =~ s/($re)/$h{$1}/g;
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文