【问题标题】:perl split the element of array into another 2D array errorperl将数组元素拆分为另一个二维数组错误
【发布时间】:2013-06-28 21:43:51
【问题描述】:

我有一个数组,其中包含类似 s1,s2,.. 的字符串 我需要拆分“,”并将字符串放在另一个二维数组中 这是我的代码

 @arr2D;
     $i=0;
     foreach $a (@array){
    $arr2D[$i]= split (/,/,$a);
    $i++;
     }
//print arr2D content 
    for ($j=0;$j<scalar @arr;$j++){
    print $arr2D[$j][0].$arr2D[$j][1]."\n";
    }

问题是在尝试打印 arr2D 内容时我什么也没得到...有什么建议吗?

【问题讨论】:

    标签: regex arrays perl multidimensional-array


    【解决方案1】:

    您需要将拆分的结果捕获到一个数组本身中。请注意下面的附加括号。这会将结果捕获到一个数组中,并将数组引用分配给$arr2D[$i],从而为您提供所需的二维数组。

    foreach my $elem (@array)
    {
        $arr2D[$i] = [ split( /,/, $elem ) ];
        $i++;
    }
    

    另外,你可能想避免使用$a,因为 perl 在太多的上下文中特别对待它。请注意,我在上面将其名称更改为$elem

    从风格上讲,您可以通过将其重写为 map 来消除 $i 和循环:

    @arr2D = map { [ split /,/ ] } @array;
    

    应该可以,而且更简洁。

    【讨论】:

    • push @arr2D, [ split( /,/, $elem ) ]; 将不再需要 $i
    • Hunter: 是的,如果@arr2D 一开始是空的。我不清楚是不是。
    猜你喜欢
    • 1970-01-01
    • 2014-08-28
    • 1970-01-01
    • 2011-07-24
    • 1970-01-01
    • 2023-03-08
    • 1970-01-01
    • 2021-08-14
    • 1970-01-01
    相关资源
    最近更新 更多