将char数组转换为多个String

fel*_*lix 3 java arrays string java-8

我需要将char数组转换为一定大小的几行.例如,考虑这个数组:

char[] bases = new char[]{'a', 'c', 'c', 't', 'a', 'c', 'a', 't', 'a', 'c', 'c', 't', 'a', 'c', 'a', 't'};
Run Code Online (Sandbox Code Playgroud)

预期的输出大小为5:

accta
catac
ctaca
Run Code Online (Sandbox Code Playgroud)

我目前正在使用此代码:

    int ls = 5; 
    String str = ""; 
    for (int i = 1; i < bases.length; i++) {
        str += bases[i - 1];
        if (i%ls == 0) {
            str += '\n';
        }
    }
Run Code Online (Sandbox Code Playgroud)

在java 8中是否有一些内置函数来实现这一点?有没有更好的方法来解决这个问题?

YCF*_*F_L 5

你可以转换char[]为字符串,然后你可以使用拆分与一些正则表达式:

String s = String.valueOf(bases);//result = acctacatacctacat
System.out.println(Arrays.toString(s.split("(?<=\\G.{5})")));
Run Code Online (Sandbox Code Playgroud)

如果你想把它放在一行:

String[] spl = String.valueOf(bases).split("(?<=\\G.{5})");
Run Code Online (Sandbox Code Playgroud)

产量

[accta, catac, ctaca, t]
Run Code Online (Sandbox Code Playgroud)