2012-12-10 45 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

相關問題