文字列の長さを得る

日本語のようなマルチバイト文字列の場合、バイト数か文字数によって結果が異なる
コード系によってさらに違うから面倒だ。

ソース

println "This is a String".length()
println "This is a String".size()
println "This is a String".getBytes().size()
println "This is a String".getBytes("UTF-8").size()

println "いろはにほへと".length()
println "いろはにほへと".size()
println "いろはにほへと".getBytes().size()
println "いろはにほへと".getBytes("UTF-8").size()

実行環境

結果

groovy:000> load StringLength.groovy
16
===> null
16
===> null
16
===> null
16
===> null

ASCIIは簡単でいいですな。

7
===> null
7
===> null
14
===> null
21
===> null
groovy:000>

size()はgroovyのメソッドだけどlength()と変わらない。
バイト数をとってくれてもいいのに。


SJISだと14バイト、UTF-8だと21バイト
Twitterが140文字でよかった。UTF-8で140バイトだったとしたら、
コミュニケーションは無理だな。。