Java字符串分段位于第n个位置

我在Java中的代码和一个较长的文本(最多500个字符),我想对此文本进行某种细分,例如,在每个分段中我只希望有6个字符:这是一个示例文本:


String fullText = "Syria officially known as the Syrian Arab Republic, is a country in Western Asia...";

我想要这个结果:


第1段:叙利亚


segment2:offici


Segment3:盟友k


段n:……


我已经尝试过for循环,但是没有达到目标。而且我也遇到了错误


java.lang.StringIndexOutOfBoundsException: length=67; regionStart=65; regionLength=5

这是我的代码:


    String msg = fullText;


for(int i=-1 ; i <= fullText.length()+1; i++){

            

     int len = msg.length();

     text = new StringBuilder().append(msgInfo).append(msg.substring(i, i + 6)).toString();

     

     msg = new StringBuilder().append(msg.substring(i +5, len)).toString();


     LogHelper.d(TAG, "teeeeeeeeeeeeext:"+i +" .."+ text);


        }

我如何正确进行此细分?谢谢!


呼唤远方
浏览 212回答 2
2回答

MM们

您处在正确的轨道上,但是您已经使这一过程变得复杂了。尝试这样的事情int segmentSize = 6;String[] segments = new String[msg.length() / segmentSize + 1];for (int i = 0; i < msg.length(); i += segmentSize) {&nbsp; &nbsp; // ensure we don't try to access out of bounds indexes&nbsp; &nbsp; int lastIndex = Math.min(msg.length(), i+segmentSize);&nbsp; &nbsp; int segmentNumber = i/segmentSize;&nbsp; &nbsp; segments[segmentNumber] = msg.substring(i, lastIndex);}这会将分段放入该名称的数组中。在Math.min(msg.length(), i+segmentSize)确保你不要试图拉以外的字符的字符串,这是什么原因造成的错误StringIndexOutOfBounds你提到的结尾。您可以根据需要执行其他操作,而不是将其放入数组中。如果您的最终目标是将更长的字符串合并到这些段中,则可以在for循环之外创建一个StringBuilder(例如在声明segments数组的位置),然后可以根据需要在循环内追加到该字符串并访问结果循环之后(即sb.toString()),而不必在每次循环迭代时都创建StringBuilder的新实例。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java