从数组中删除空白元素



在我的Perl代码中,我正在访问一封电子邮件。我需要获取其中的表并将其解析为数组。我用:

my @plain = split(/n/,$plaintext);

但是,@plain中有许多空白元素。它有572个元素,其中大约一半是空的。

我在这里做错了什么吗?我需要在代码中添加/更改什么才能摆脱空白元素?

grep输出,因此您只能获得包含非白配字符的条目。

my @plain = grep { /S/ } split(/n/,$plaintext);

正确的方法是从@dave交叉

快速而肮脏,如果你不想修复你的分裂:

foreach(@plain){
    if( ( defined $_) and !($_ =~ /^$/ )){
        push(@new, $_);
    }
}

编辑:它是如何工作的

将会有比上述方法更优雅和有效的方法,但就像所有perl-y tmtowtdi一样! 其工作方式是:

  1. 遍历数组@plain,使$_设置为当前数组元素

    foreach(@plain){

  2. 检查当前元素,看看我们是否对它感兴趣:

    ( defined $_) # has it had any value assigned to it !($_ =~ /^$/ ) # ignore those which have been assigned a blank value eg. ''

  3. 如果当前元素通过这些检查,则将其推送到@new

    push(@new, $_);

代码中需要添加一行,并且可以正常工作

   @plain= grep { $_ ne '' } @plain;
这是我

使用的,太晚了,但这很好,可以在将来使用

$t = "1.2,3.4,3.12,3.18,3.27";
my @to = split(',',$t);
foreach $t ( @to ){
    push ( @valid , $t );
}
my $max = (sort { $b <=> $a } @valid)[0];
print $max

最新更新