像这样的数字,要求:如果前后是连续的数字,取最大和最小的中间用‘-’分割拼串,如果不连续就正常显示;例如;1206000045,1206000052,1206001288-1206001290,120600;所有的拼好的都用‘,’分开,然后整体拼成一个String类型的字符串传到前台
哪位大神指点一下java后台怎么拼串
解决方案 »
- ssh更新数据库数据报错
- JSP连接MySQL的问题
- JAVA继承类的反射为什么报错啊?
- 江湖急救。。为什么这样写if(u.length()!=0&&p.length()!=0)会出错
- 继承SqlMapClientDaoSupport的DAO类,怎么测试它?
- 问下各位大大,在北京5K---6K的java程序员要会到什么程度?
- Spring2.5中(@Controller,@RequestMapping)
- [线下活动] Java事件编程
- 遇到Exception starting filter struts2的问题!查了好多资料都不得,求好人高手帮忙!
- 请教:WebService中,怎样取得函数输出参数的返回值?
- 一个html页面的搜索框不是form表单,那么如何往controller中传值?
- The function equals must be used with a prefix when a default namespace is n
String numstr = "1206000045,1206000052,1206001288,1206001289,120600";
String[] numArr = numstr.split(",");
int len = numArr.length;
String newnumstr = "";
for (int i = 0; i < len - 1; i++) {
int num1 = NumberTool.safeToInteger(numArr[i], 0);
int num2 = NumberTool.safeToInteger(numArr[i + 1], 0);
if (i == 0)
newnumstr += num1 + "";
if (num1 + 1 != num2)
newnumstr += "," + num2;
else
newnumstr += "-" + num2;
}
public static StringBuilder formatStr(String str){
String[] arr=str.split(",");
int len=arr.length;
long min=-1;
long max=-1;
StringBuilder result=new StringBuilder();
for(int i=0;i<len;i++){
if(i!=len-1){
min=Long.valueOf(arr[i]);
max=Long.valueOf(arr[i+1]);
if(max-min==1){
result.append(min).append("-");
int j=i+1;
while((j!=len-1)&&Long.valueOf(arr[j])+1==Long.valueOf(arr[j+1])){
max=Long.valueOf(arr[j+1]);
j++;
}
result.append(max).append(j==len-1?"":",");
i=j;
}else{
result.append(arr[i]).append(",");
}
}else{
result.append(arr[i]);
}
}
return result;
}