发布于 2年前

Raku根据index删除字符串中的字符

示例说明:0123456789,删除索引为1-3,以及8的字符串,结果应该为:045679。

实现

my $a='0123456789';
with $a {$_=.comb[(^* ∖ (1..3, 8).flat).keys.sort].join};
say $a;

可以简写为一行代码:

say '0123456789'.comb[(^* ∖ (1..3, 8).flat).keys.sort].join;

抽取公共方法

为了更方便点,可以抽象出一个函数。

方法一:

sub remove($str, $a) {
    $str.comb[(^* ∖ $a.flat).keys.sort].join;
}
say '0123456789'.&remove: (1..3, 8);

方法二:直接给Str添加参数:

use MONKEY-TYPING;
augment class Str {
    method remove($a) {
        $.comb[(^* ∖ $a.flat).keys.sort].join;
    }
};
say '0123456789'.remove: (1..3, 8);
©2020 edoou.com   京ICP备16001874号-3