2011-05-19 87 views
4

可能重复:
How can I split a string into chunks of two characters each in Perl?perl的 - 分裂串入2-字符组

我想通过2个字符的块分割的字符串到一个数组分组它:

$input = "DEADBEEF"; 
    @output = split(/(..)/,$input); 

这种方法产生的每一个其他元素为空。

$VAR1 = ''; 
    $VAR2 = 'DE'; 
    $VAR3 = ''; 
    $VAR4 = 'AD'; 
    $VAR5 = ''; 
    $VAR6 = 'BE'; 
    $VAR7 = ''; 
    $VAR8 = 'EF'; 

如何获得连续的阵列?

$VAR1 = 'DE'; 
    $VAR2 = 'AD'; 
    $VAR3 = 'BE'; 
    $VAR4 = 'EF'; 

(...比得到的第一个结果并去除所有其他行等...)

+0

谢谢你,埃德 - 可能这是正确的解决方案,您可以随时关闭的问题。 – 2011-05-19 13:30:46

+0

我在链接的线程中为你添加了一个答案。 – ikegami 2011-05-19 16:30:02

回答

3

您可以轻松地过滤掉空条目具有:

@output = grep { /.+/ } @output ; 

编辑: 可以得到同样的事情更容易:

$input = "DEADBEEF"; 
my @output = ($input =~ m/.{2}/g); 

编辑2另一个版本:

$input = "DEADBEEF"; 
my @output = unpack("(A2)*", $input); 

问候

+2

'a2',而不是'A2'。后者剥去了空白,这在多余情况下是多余的。 – ikegami 2011-05-19 16:30:51

2

试试这个:

$input = "DEADBEEF"; 
@output =(); 

while ($input =~ /(.{2})/g) { 
    push @output, $1; 
} 
+0

添加/ s标志,或换行符将跳过(以及它们之前的奇数字符) – ysth 2011-05-19 14:21:30