perl字符串中的行数

时间:2015-04-12 07:39:59

标签: string perl

使用perl,是否有任何一个命令可以提供字符串中的行数?

my $linenum= .... $str ....

当字符串为空,单行和多行时,它应该起作用。

3 个答案:

答案 0 :(得分:8)

您可以计算字符串中换行符\n的数量(或Mac换行符的\r

my $linenum = $str =~ tr/\n//;

答案 1 :(得分:0)

我已经将@rplantiko的答案改编成一个完整的子例程,该子例程按照我对它的描绘方式工作,并处理undef和“”。它还知道如何使文本的最后一行缺少“ \ n”并返回表观行数(即“ \ n” +1的计数)

# should work on windows + unix but not the old mac
sub count_lines_in_string { 
    $_ = shift;
    return 0 if( !defined $_ or $_ eq "");
    my $lastchar = substr $_, -1,1;
    my $numlines = () = /\n/g;
# was last line a whole line with a "\n"?;
    return $numlines + ($lastchar ne "\n"); 
}
say count_lines_in_string("asdf\nasdf\n") ;
say count_lines_in_string undef;
say count_lines_in_string "a";

答案 2 :(得分:-3)

尝试使用正则表达式