文字列の長さを得る
日本語のようなマルチバイト文字列の場合、バイト数か文字数によって結果が異なる
コード系によってさらに違うから面倒だ。
ソース
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()
実行環境
- OS:Windows XP
- Groovy Version: 1.6.5
- JVM: 1.6.0_12
結果
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バイトだったとしたら、
コミュニケーションは無理だな。。