Java 字符串消息将10个字符除以一个字符
我想把下面的消息除以10个字符。我想将每个零件附加到StringBuilder对象中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) !=
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());