Java 字符串消息将10个字符除以一个字符

Java 字符串消息将10个字符除以一个字符,java,Java,我想把下面的消息除以10个字符。我想将每个零件附加到StringBuilder对象中 04421,1,13,S,312|4000004130,1;4000000491,1;4000005240,1;4000005789,2;4000004978,2;4000004934,2;4000004936,1;4000000569,2;4000005400,1;4000000;4000004934,2; 我已完成以下解决方案: if(getMsgOtherPart(message) !=

我想把下面的消息除以10个字符。我想将每个零件附加到StringBuilder对象中

    04421,1,13,S,312|4000004130,1;4000000491,1;4000005240,1;4000005789,2;4000004978,2;4000004934,2;4000004936,1;4000000569,2;4000005400,1;4000000;4000004934,2;
我已完成以下解决方案:

    if(getMsgOtherPart(message) != null){      
         System.out.println("part message::"+getMsgOtherPart(message));
         String newMessage = getMsgOtherPart(message) ;

        int len = newMessage.length();
         System.out.println("len::"+len);
        int firstIndex = 0;
        int limit = 10;
        int lastIndex = 10;
        int count = 0;
        StringBuilder sb = new StringBuilder();
        String completeMessage = null;
        for(int i = 0; i <= len;i++){
            count++;
            if( count == limit  && lastIndex < len){
                sb.append(getSmsUniqueHeader());
                sb.append(newMessage.substring(firstIndex,lastIndex));
                sb.append("#"); 
                sb.append("\n");                   
                firstIndex = lastIndex;
                lastIndex = firstIndex + limit;
                count = 0;
            } else if(count < limit && i == len)    {
                 System.out.println("lastIndex:: "+lastIndex);
                 sb.append(getSmsUniqueHeader());
                sb.append(newMessage.substring(lastIndex-10));
                sb.append("#"); 

            }               

        }
        completeMessage = sb.toString(); 
        System.out.println("message::\n"+completeMessage);
    }

请让我知道如何优化我的解决方案。

我在我的一个项目中做过这种事情,下面是我使用的函数,它返回列表,但您可以修改它并使用StringBuilder

public List<String> splitStringEqually(String txtStr, int subStringSize) {
    List<String> splittedStringList = new ArrayList<String>();
    for (int start = 0; start < txtStr.length(); start += subStringSize) {

        splittedStringList.add(txtStr.substring(start, Math.min(txtStr.length(), start + subStringSize)));
    }
    return splittedStringList;
}
公共列表拆分字符串(字符串txtStr,int subStringSize){
List splittedStringList=新建ArrayList();
对于(int start=0;start
我在我的一个项目中做过这种事情,下面是我使用的函数,它返回列表,但您可以修改它并使用StringBuilder

public List<String> splitStringEqually(String txtStr, int subStringSize) {
    List<String> splittedStringList = new ArrayList<String>();
    for (int start = 0; start < txtStr.length(); start += subStringSize) {

        splittedStringList.add(txtStr.substring(start, Math.min(txtStr.length(), start + subStringSize)));
    }
    return splittedStringList;
}
公共列表拆分字符串(字符串txtStr,int subStringSize){
List splittedStringList=新建ArrayList();
对于(int start=0;start
字符串在内部维护为字符数组。您可以使用
message.tocharray()
获取该字符数组的副本,并使用简单的循环或java 8 streams以10个为单位拾取元素,然后执行您需要执行的任何操作。

字符串在内部作为字符数组维护。您可以使用
message.tocharray()
获取该字符数组的副本,并使用简单的循环或java 8 streams以10个为单位拾取元素,然后执行您需要执行的任何操作。

基于并处理OP的特定请求,代码可能如下所示(请向上投票,而不是向上投票!)

在很大程度上基于并处理OP的特定请求,代码可能如下所示(请向上投票,而不是向上投票!)

您可以使用Google的库并为此使用Splitter类

   StringBuilder sb=new StringBuilder();
    for(String s: Splitter.fixedLength(10).split(message)){
        sb.append(s);
        sb.append("#\n");
    }
    System.out.println(sb.toString());
您可以使用Google的库并为此使用Splitter类

   StringBuilder sb=new StringBuilder();
    for(String s: Splitter.fixedLength(10).split(message)){
        sb.append(s);
        sb.append("#\n");
    }
    System.out.println(sb.toString());

您确定要将该字符串任意除以10个字符吗?你能告诉我们预期的输出是什么吗?输出是你不正确的输出吗?你能展示一下你想要的吗。这是正确的。但我需要任何优化或其他solution@ken您能发布完整的解决方案吗?您确定要将该字符串任意除以10个字符吗?你能告诉我们预期的输出是什么吗?输出是你不正确的输出吗?你能展示一下你想要的吗。这是正确的。但我需要任何优化或其他solution@ken您可以发布完整的解决方案吗?可以解释或链接子字符串(start,Math.min(txtStr.length(),start+subStringSize))可以解释或链接子字符串(start,Math.min(txtStr.length(),start+subStringSize))
   StringBuilder sb=new StringBuilder();
    for(String s: Splitter.fixedLength(10).split(message)){
        sb.append(s);
        sb.append("#\n");
    }
    System.out.println(sb.toString());