kz’s blog

興味のあることについて書いていきます。

Java で文字列を指定の桁数で分割し配列にする方法

はじめに

Java の文字列操作と言えば Apache Commons LangStringUtilsをよく使いますが、文字列を指定の桁数で分割するメソッドは実装されていないようなので、やり方を書いておきます。

やりたいこと

分割対象文字列

あいうえおかきくけこを指定した桁数で分割する。

ここでは3桁を指定することにします。

結果

あいう えおか きくけ と要素が4つの配列を返却する。

ソースコード

分割するメソッド

   public static List<String> splitByLength(String str, int length) {
        List<String> strs = new ArrayList<>();
        for (int i = 0; i < StringUtils.length(str); i += length) {
            strs.add(StringUtils.substring(str, i, i + length));
        }
        return strs;
    }

一部Apache Commons LangStringUtilsを使用しているところに注意して下さい。

呼び出し側

   public static void main(String[] args) {
        System.out.println(splitByLength("あいうえおかきくけこ", 3));
    }

コンソール表示内容

[あいう, えおか, きくけ, こ]

おわりに

Apache Commons LangStringUtilsを使用することで簡単に実装できました。Java 標準のString#substringでも実装できますが工夫しないとIndexOutOfBoundsExceptionが出るので注意して下さい。

まぁそもそも、文字列を指定した桁数で分割するような固定長のデータを扱うシステムは根本的に設計を見直した方がいいと思う。