2 回答
![?](http://img1.sycdn.imooc.com/545869470001a00302200220-100-100.jpg)
TA贡献1886条经验 获得超2个赞
您处在正确的轨道上,但是您已经使这一过程变得复杂了。
尝试这样的事情
int segmentSize = 6;
String[] segments = new String[msg.length() / segmentSize + 1];
for (int i = 0; i < msg.length(); i += segmentSize) {
// ensure we don't try to access out of bounds indexes
int lastIndex = Math.min(msg.length(), i+segmentSize);
int segmentNumber = i/segmentSize;
segments[segmentNumber] = msg.substring(i, lastIndex);
}
这会将分段放入该名称的数组中。在Math.min(msg.length(), i+segmentSize)确保你不要试图拉以外的字符的字符串,这是什么原因造成的错误StringIndexOutOfBounds你提到的结尾。
您可以根据需要执行其他操作,而不是将其放入数组中。如果您的最终目标是将更长的字符串合并到这些段中,则可以在for循环之外创建一个StringBuilder(例如在声明segments数组的位置),然后可以根据需要在循环内追加到该字符串并访问结果循环之后(即sb.toString()),而不必在每次循环迭代时都创建StringBuilder的新实例。
添加回答
举报