【发布时间】:2010-09-18 09:55:12
【问题描述】:
strlen() 的 Perl 等价物是什么?
【问题讨论】:
strlen() 的 Perl 等价物是什么?
【问题讨论】:
length($string)
perldoc -f 长度
长度 EXPR
length 返回 EXPR 值的字符长度。如果 EXPR 是
省略,返回 $_ 的长度。请注意,这不能用于
整个数组或散列以找出它们有多少元素。为了
也就是说,分别使用“scalar @array”和“scalar keys %hash”。
注意字符:如果 EXPR 是 Unicode,你会得到 num-
ber 字符,而不是字节数。得到长度
字节,使用“做{使用字节;长度(EXPR)}”,见字节。
【讨论】:
strlen 的等价物,它也停止在嵌入的零上。
length($string)
【讨论】:
虽然 'length()' 是应该在任何健全的代码中使用的正确答案,但应该提到 Abigail's length horror,如果只是为了 Perl 知识。
基本上,诀窍在于使用包罗万象的音译运算符的返回值:
print "foo" =~ y===c; # prints 3
y///c 用自己替换所有字符(感谢补码选项'c'),并返回替换的字符数(因此,实际上是字符串的长度)。
【讨论】:
length() 函数:
$string ='String Name';
$size=length($string);
【讨论】:
您不应该使用它,因为 length($string) 更简单且更具可读性,但我在查看代码时遇到了其中一些并且感到困惑,所以如果其他人这样做,这些也会得到长度一个字符串:
my $length = map $_, $str =~ /(.)/gs;
my $length = () = $str =~ /(.)/gs;
my $length = split '', $str;
前两个使用全局标志来匹配字符串中的每个字符,然后使用标量上下文中返回的匹配列表来获取字符数。第三个类似地通过拆分每个字符而不是正则表达式匹配并在标量上下文中使用结果列表
【讨论】:
不是答案,而是观察:我正在运行为 darwin-2level 构建的 v5.30.2,并且我注意到如果我不首先 chomp 我的输入(与标准输入一样),然后计算长度,单个字符的length不是1,而是2。
记住那些可能是一个因素的换行符和其他隐藏字符。
我很想找到阿比盖尔的帖子,但可惜它似乎已经被以太消耗了。
【讨论】: