使用perl
,是否有任何一个命令可以提供字符串中的行数?
my $linenum= .... $str ....
当字符串为空,单行和多行时,它应该起作用。
答案 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)
尝试使用正则表达式