如何在Raku中使用TR///直接处理字符串生成新字符串?
如何直接使用TR///处理字符串并生成新字符串(无需绑定$_)
在Raku中,要直接用TR///处理字符串并生成新字符串,无需借助with绑定$_,可以通过以下两种简洁方式实现:
方法1:子例程方法调用语法(贴近TR///直观写法)
使用.&语法将TR作为字符串的方法调用,直接把目标字符串作为隐式处理对象,保留TR的副词和模式写法:
my $str = 'xABCz'; my $new_str = $str.&TR:c:d/ABC//; say "-->$new_str<--"; # 输出: -->ABC<--
这里.&会将左侧的$str设为TR的处理目标(隐式绑定$_但无需显式写with),执行后直接返回处理后的新字符串。
方法2:显式参数传递(函数式写法)
TR本质是Raku内置子例程,可直接传递目标字符串、匹配模式、替换模式作为位置参数,搭配所需副词:
my $str = 'xABCz'; my $new_str = TR:c:d($str, 'ABC', ''); say "-->$new_str<--"; # 输出: -->ABC<--
这种写法完全显式传递参数,不依赖$_的绑定逻辑,更符合函数式编程风格。
两种方式都能达到你在Perl中使用tr/ABC//rcd的效果,直接生成处理后的新字符串。
内容的提问来源于stack exchange,提问作者7stud
相关产品推荐
相关产品推荐

