web-dev-qa-db-ja.com

Perlで文字列の長さを取得するにはどうすればよいですか?

strlen()と同等のPerlは何ですか?

50
Kip
perldoc -f length 
 
 length EXPR 
 length EXPRの値の文字の長さを返します。 EXPRが
省略された場合、$ _の長さを返します。 
配列全体またはハッシュでこれらを使用して、これらの要素がいくつあるかを調べることはできません。 
の場合は、それぞれ「スカラー@array」と「スカラーキー%hash」を使用します。
 
文字に注意してください。EXPRがUnicodeの場合、num- 
バイト数ではなく、文字数。 
バイト単位で長さを取得するには、「do {use bytes; length(EXPR)}」を使用します。バイトを参照してください。
73
Paul Tomblin

'length()'は正しいコードで使用すべき正しい答えですが、Perlの伝承のためだけに Abigail's length horror を指定する必要があります。

基本的に、コツはキャッチオール音訳演算子の戻り値を使用することです。

print "foo" =~ y===c;   # prints 3

y /// cはすべての文字をそれ自体で置き換え(補完オプション 'c'のおかげ)、置き換えられた文字の数(つまり、事実上、文字列の長さ)を返します。

43
Yanick
length($string)
35
JDrago

length()関数:

$string ='String Name';
$size=length($string);
1
RANA DINESH

Length($ string)はよりシンプルで読みやすいので、これを使用するべきではありませんが、コードを調べているときにこれらのいくつかに遭遇し、混乱しました。

my $length = map $_, $str =~ /(.)/gs;
my $length = () = $str =~ /(.)/gs;
my $length = split '', $str;

最初の2つは、グローバルフラグを使用して文字列内の各文字を照合し、次に返された一致のリストをスカラーコンテキストで使用して文字数を取得することで機能します。 3番目は、正規表現マッチングの代わりに各文字で分割し、結果のリストをスカラーコンテキストで使用することにより、同様に機能します。

0
pslessard