自带没什么好方法,就是 substring(),自己计算好字符位置。不过,有个小问题我不太记得了,就是你说的70,是“字”还是“字节”;这两者需要注意下。切割方式可以循环切割了,类似: while (str.length() > 70) { String part = str.substring(0, 70); SEND(part); } SEND(str); 整型除法,可以偷鸡的方式做,比如: int num = 13; int div = 3; int result = (num + div - 1) / div;
前面那个问题可以像LS的那样做13/3我希望的结果是5 也可以这样:int result = 13%3==0 ? 13/3 : 13/3+1
(13+(3-1))/3 = 15 这个可以完成向上取整,分页技术常用这种算法计算当前页。短信如果采用UCS-2编码的话,一条短信最多70个字符。拆分字符串,我这有个效率较低的方法,楼主可以参考一下。public class ShortMessageUtil { public static String[] split(String message){ if(message==null)return null; if(message.length()<=70)return new String[]{message}; int size = (message.length()+69)/70; String[] group = new String[size]; StringBuilder buffer = new StringBuilder(message); for(int i=0;i<size-1;i++){ group[i]=buffer.substring(0, 70); buffer.delete(0, 70); } group[size-1]=buffer.toString(); return group; } /** * 测试用例 */ public static void main(String[] args) { StringBuilder msg = new StringBuilder(); for(int i=0;i<150;i++){ msg.append(i%10); } String message = msg.toString(); String[] group = split(message); for(String sub : group){ System.out.println(sub); } }}
想不明白,怎么发表的内容没了。 重发一个,如果再没了,就不管了。1. (13+(3-1))/3 = 5 这个可以实现向上取整,分页技术中经常用到。2. 写了一个效率较低的拆分算法,楼主可以参考。public class ShortMessageUtil { public static String[] split(String message){ if(message==null)return null; if(message.length()<=70)return new String[]{message}; int size = (message.length()+69)/70; String[] group = new String[size]; StringBuilder buffer = new StringBuilder(message); for(int i=0;i<size-1;i++){ group[i]=buffer.substring(0, 70); buffer.delete(0, 70); } group[size-1]=buffer.toString(); return group; } /** * 测试用例 */ public static void main(String[] args) { StringBuilder msg = new StringBuilder(); for(int i=0;i<150;i++){ msg.append(i%10); } String message = msg.toString(); String[] group = split(message); for(String sub : group){ System.out.println(sub); } }}
while (str.length() > 70) {
String part = str.substring(0, 70);
SEND(part);
}
SEND(str);
整型除法,可以偷鸡的方式做,比如:
int num = 13;
int div = 3;
int result = (num + div - 1) / div;
也可以这样:int result = 13%3==0 ? 13/3 : 13/3+1
这个可以完成向上取整,分页技术常用这种算法计算当前页。短信如果采用UCS-2编码的话,一条短信最多70个字符。拆分字符串,我这有个效率较低的方法,楼主可以参考一下。public class ShortMessageUtil { public static String[] split(String message){
if(message==null)return null;
if(message.length()<=70)return new String[]{message};
int size = (message.length()+69)/70;
String[] group = new String[size];
StringBuilder buffer = new StringBuilder(message);
for(int i=0;i<size-1;i++){
group[i]=buffer.substring(0, 70);
buffer.delete(0, 70);
}
group[size-1]=buffer.toString();
return group;
} /**
* 测试用例
*/
public static void main(String[] args) {
StringBuilder msg = new StringBuilder();
for(int i=0;i<150;i++){
msg.append(i%10);
}
String message = msg.toString();
String[] group = split(message);
for(String sub : group){
System.out.println(sub);
}
}}
重发一个,如果再没了,就不管了。1. (13+(3-1))/3 = 5
这个可以实现向上取整,分页技术中经常用到。2. 写了一个效率较低的拆分算法,楼主可以参考。public class ShortMessageUtil { public static String[] split(String message){
if(message==null)return null;
if(message.length()<=70)return new String[]{message};
int size = (message.length()+69)/70;
String[] group = new String[size];
StringBuilder buffer = new StringBuilder(message);
for(int i=0;i<size-1;i++){
group[i]=buffer.substring(0, 70);
buffer.delete(0, 70);
}
group[size-1]=buffer.toString();
return group;
} /**
* 测试用例
*/
public static void main(String[] args) {
StringBuilder msg = new StringBuilder();
for(int i=0;i<150;i++){
msg.append(i%10);
}
String message = msg.toString();
String[] group = split(message);
for(String sub : group){
System.out.println(sub);
}
}}