2012-12-10 18 views
-2

我有一个字符串(比如说ABCDEABCDEABCDEABCDEABCDEABCD),并且我希望它在每次出现E时切割一次,一次跳过前两个位置。为前。上述顺序中'E'的位置是5,10,15,20,25。因此,在第一轮中,位置5和10应该跳过,并且必须在位置15,20和25处切断字符串。在第二轮中,它应该跳过10和15,并且字符串必须在5,20和25处切断,并且因此用于下一个3轮(直到完成两个后续位置的所有组合)位置(15,20),(20,25)和(25,5)必须分别跳过。我错过了这个基本的方法。请帮忙!通过在perl中每次丢失两个后续位置来切割一个字符串

回答

0

分割上的每个 'E',然后再结合三大要素:

use strict; 
use warnings; 
my @arr = split /E/, 'ABCD1EABCD2EABCD3EABCD4EABCD5EABCD6'; 
for my $pos ([email protected]) { 
    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"; 
} 
+0

感谢您的帮助!但是,你能帮我做一个循环中的拼接和连接过程吗(比如说,在所有后面的两个位置上发生'foreach'循环)? – user1746090

+0

只需将它包装在'$ splice_pos'的循环中即可。 – Tim

+0

(用'@ arr'来做任何事情,而不是把结果扔掉。) – Tim

相关问题