为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

呼唤远方 2021-05-12 17:18:58
我在Java中的代码和一个较长的文本(最多500个字符),我想对此文本进行某种细分,例如,在每个分段中我只希望有6个字符:这是一个示例文本:String fullText = "Syria officially known as the Syrian Arab Republic, is a country in Western Asia...";我想要这个结果:第1段:叙利亚segment2:officiSegment3:盟友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);        }我如何正确进行此细分?谢谢!
查看完整描述

2 回答

?
MM们

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的新实例。




查看完整回答
反对 回复 2021-05-26
  • 2 回答
  • 0 关注
  • 211 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信