Perl相当于strlen()
?
答案 0 :(得分:72)
perldoc -f length length EXPR length Returns the length in characters of the value of EXPR. If EXPR is omitted, returns length of $_. Note that this cannot be used on an entire array or hash to find out how many elements these have. For that, use "scalar @array" and "scalar keys %hash" respectively. Note the characters: if the EXPR is in Unicode, you will get the num- ber of characters, not the number of bytes. To get the length in bytes, use "do { use bytes; length(EXPR) }", see bytes.
答案 1 :(得分:42)
虽然'length()'是应该在任何理智代码中使用的正确答案,但是应该提到Abigail's length horror,如果只是为了Perl知识。
基本上,技巧包括使用catch-all音译操作符的返回值:
print "foo" =~ y===c; # prints 3
y /// c用自己替换所有字符(多亏了补码选项'c'),并返回替换字符的数量(实际上,字符串的长度)。
答案 2 :(得分:33)
length($string)
答案 3 :(得分:0)
length()
功能:
$string ='String Name';
$size=length($string);
答案 4 :(得分:0)
您不应该使用它,因为length($ string)更简单并且更具可读性,但是我在查看代码时碰到了其中的一些内容,并且感到困惑,因此,如果其他人这样做,它们也会得到长度字符串:
my $length = map $_, $str =~ /(.)/gs;
my $length = () = $str =~ /(.)/gs;
my $length = split '', $str;
前两个通过使用全局标志来匹配字符串中的每个字符,然后在标量上下文中使用返回的匹配列表来获取字符数来工作。第三类的工作原理类似,它是对每个字符进行拆分而不是使用正则表达式匹配,并在标量上下文中使用结果列表。
答案 5 :(得分:0)
不是回答而是观察:我正在运行为darwin-2level构建的v5.30.2,并且我注意到,如果我不首先chomp
输入(与stdin一样),然后进行计算长度,单个字符的length
不是1,而是2。
记住那些可能是换行符和其他隐藏字符的原因。
我很想找到Abigail的帖子,但可惜它似乎已经被以太所吞噬。