gpt4 book ai didi

perl - 在tr///中使用char变量

转载 作者:行者123 更新时间:2023-12-04 16:29:38 24 4
gpt4 key购买 nike

我试图对字符串中的字符进行计数,并找到了一种简单的解决方案,使用tr运算符对单个字符进行计数。现在,我想对从a到z的每个字符执行此操作。以下解决方案不起作用,因为tr///匹配每个字符。

my @chars = ('a' .. 'z');
foreach my $c (@chars)
{
$count{$c} = ($text =~ tr/$c//);
}

如何正确使用 tr///中的char变量?

最佳答案

tr 不支持变量插值(既不在搜索列表中,也不在替换列表中)。如果要使用变量,则必须使用eval():

$count{$c} = eval "\$text =~ tr/$c/$c/";

也就是说,一种更有效(更安全)的方法是简单地遍历字符串中的字符并为每个字符增加计数器,例如:
my %count = map { $_ => 0 } 'a' .. 'z';

for my $char (split //, $text) {
$count{$char}++ if defined $count{$char};
}

关于perl - 在tr///中使用char变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11415045/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com