我有一个字符串(比如ABCDEABCDEABCDEABCDEABCDEABCD),我希望它在每次出现E时都会被砍掉,在一轮中一次跳过前2个位置。对于前上述序列中'E'的位置是5,10,15,20,25。因此,在第一轮中,应该跳过第5和第10位,并且必须在第15,20和25位切断弦。在第二轮中它应该跳过10和15并且弦必须在5,20和25处被切断。因此下一个必须分别跳过3轮(直到完成两个后续位置的所有组合)位置(15,20),(20,25)和(25,5)。我对此缺乏基本的解决方法。请帮忙!
答案 0 :(得分:0)
在每个'E'上拆分,然后组合三个元素:
use strict;
use warnings;
my @arr = split /E/, 'ABCD1EABCD2EABCD3EABCD4EABCD5EABCD6';
for my $pos ( 0..@arr-3 ) {
my $combined_element = join '', @arr[$pos..$pos+2];
my @new_arr = ( @arr[0..$pos-1], $combined_element, @arr[$pos+3..$#arr] );
print "@new_arr\n";
}