StringUtils#abbreviate
仕事でcommons-langライブラリのソースを見る機会があり、ちょっとメソッドの挙動に疑問を持つ。
javadocの使用例は下記のようになっている。
StringUtils.abbreviate("abcdefghijklmno", 0, 10) = "abcdefg..." StringUtils.abbreviate("abcdefghijklmno", 1, 10) = "abcdefg..." StringUtils.abbreviate("abcdefghijklmno", 4, 10) = "abcdefg..." StringUtils.abbreviate("abcdefghijklmno", 5, 10) = "...fghi..."
実際に試して見ても結果は使用例の通り。
2番目の引数は元の文字列の先頭を何文字切り詰めるかという意味らしいのだが、
3以下であれば「...」に置き換える意味が無いので切り詰められないのはわかるが、
なぜ4でも切り詰められない?
StringUtils.abbreviate("abcdefghijklmno", 4, 10) = "...efgh..."
になってもいいではないか。