文字列の長さを取得するには (len / length / mb_strlen / size / strlen)

文字列の長さを取得する方法の、プログラミング言語別のメモ。

C言語, C++

strlen(str)

GO言語

len(str)

Java

str.length()

Scala

str.length

Groovy

str.length()
str.size()

PHP

strlen($str)
mb_strlen($str)

Python

len(str)

Ruby

str.length
str.size

Perl

length($str)

JavaScript

str.length

CoffeeScript

str.length
スポンサーリンク

C言語, C++

Signature:

int strlen(char *str);

最後の \x00 はカウントしない。

Go言語 (golang)

len関数を使う。

l := len(str)

ただし、len関数はバイト数を数えるので、ASCIIの範囲外にある文字はUTF8のバイト数になってしまう。

Java / Scala / Groovy

以下は文字列に含まれるcharの数を取得する例である。

実際の文字数はサロゲートペアが含まれている場合には異なってきてしまうので、文字数を調べたければ String#codePointCount を使う。

Javaでの例

int len = str.length();

Scalaでの例

val len = str.length;

Groovyでの例

def len = str.length()
// または
def len = str.size()

Signature:

int java.lang.String#length()

// sizeはGroovyのみ
int java.lang.String#size()

java.lang.String だけでなく java.lang.StringBuilderjava.lang.StringBuffer でも同様に使える。 (Groovyではsize()も同様に)

java.lang.String#length | Java Platform SE 8 Javadoc
http://docs.oracle.com/javase/8/docs/api/java/lang/String.html#length–

java.lang.String#size | Groovy JDK API Documentation
http://beta.groovy-lang.org/docs/latest/html/groovy-jdk/java/lang/String.html#size()

PHP

C言語と同じ名前の関数 strlen を使えるが、これは単にバイト配列の長さを返すだけなので、マルチバイトの文字が含まれる場合は文字数とは一致しない。マルチバイトにも対応して文字数を取得したい場合には mb_strlen を使う。

$str = "あ";

$len = strlen($str);
// => 3

$len = mb_strlen($str, "UTF-8");
// => 1

// \u1F30D 地球の絵文字
$str = "\xF0\x9F\x8C\x8D";

$len = strlen($str);
// => 4

$len = mb_strlen($str, "UTF-8");
// => 1

strlen 関数 | PHP Manual
http://php.net/manual/ja/function.strlen.php

mb_strlen 関数 | PHP Manual
http://php.net/manual/ja/function.mb-strlen.php

Python

l = len(str)

Unicode拡張領域の文字(UTF8で4バイトの文字)も含めマルチバイトの文字が含まれていても文字数を正しく取得できる。

Ruby / JRuby

l = str.length
# または
l = str.size

2つのメソッドは全く同じ。配列のサイズハッシュのサイズも同じ名前の2つのメソッドがある。

Unicode拡張領域の文字(UTF8で4バイトの文字)も含めマルチバイトの文字が含まれていても文字数を正しく取得できる。

String#bytesize というメソッドは文字数ではなくバイト数になる。

str = "あいうえお"
p str.length
# => 5

p str.bytesize
# => 15

String#length メソッド, String#size メソッド | Ruby 2.1 リファレンスマニュアル
http://docs.ruby-lang.org/ja/2.1.0/method/String/i/length.html

String#bytesize メソッド | Ruby 2.1 リファレンスマニュアル
http://docs.ruby-lang.org/ja/2.1.0/method/String/i/bytesize.html

Perl

use utf8;

length($str)

文字列をソースコード中に直接書いた場合は use utf8; としないと、マルチバイトの文字列でもバイト数を数えてしまう。 use utf8; と書いておけば、Unicode拡張領域の文字(UTF8で4バイトの文字)も含めマルチバイトの文字が含まれていても文字数を正しく取得できる。

length 関数 | perldoc.jp
http://perldoc.jp/func/length

sh (シェルスクリプト)

シェルスクリプトで変数に入っている文字列の長さを取得するには ${#VAR} を使う。

echo ${#STR}

JavaScript

str.length

CoffeeScript

str.length
このサイトは筆者(hydrocul)の個人メモの集合です。すべてのページは永遠に未完成です。
スポンサーリンク