比如你把你的数据都存在数据库里。
把你们这字符串分为两部分,前面取系统日期(在数据库中的字段为date),后面做一个整型变量(times)。
然后系统日期取出来后,搜索数据库date字段,如果找到了相同相同日期的数据了,就取times字段里最高的数据然后自动加1,如果没找到相同的date字段,就设置为001。
显示输出的时候只要把两个字段的数据转为字符串,整理合并下就可以了。
实现思路:既然是递增的,实际上就是一直在原有字符串上进行添加,当前最常用的就是通过StringBuffer的append方法来实现:
public class Test {
public static void main(String args[]) {
StringBuffer sb = new StringBuffer("abc");//初始化StringBuffer
for (int i = 0; i < 100; i++) {
sb.append(i);//递增字符+i
}
System.out.println("递增字符串结果:"+sb.toString());
}
}
select count(*) from 表 where 字段名 like '(年月200911)%';
如果count为0 后3就是001,如果count为1 后3就是002,以此类推 先加1,然后不足三位补0
这个问题我这样考虑,可能你在程序中需要不同月的这样的串,而对于同一月来说,数字后缀是递增的。那么这个问题这样解决。
设计一个类,能针对单一月产生序号串。
在程序中使用Vector或ArrayList等对象管理着不同月串生成器。
import java.util.Date;
import java.util.Calendar;
class SerialMonthGenerator{
private Calendar month;
private int serialNO;
public SerialMonthGenerator(Date month){
this.month=Calendar.getInstance();
this.month.setTime(month.getTime());
serialNO=0;
}
public String getNext(){
return String.format("%1$04d%2$02d-%3$03d",month.get(Calendar.YEAR),month.get(Calendar.MONTH),serialNO++);
}
public boolean equals(SerialMonthGenerator smg){
return month.get(Calendar.YEAR)==smg.month.get(Calendar.YEAR)&&month.get(Calendar.MONTH)==smg.month.get(Calendar.MONTH);
}
}
public class MyApp{
Vector
public static void main(String[] args){
new MyApp();
}
public MyApp(){
//.......
manager=new Vector
//......
Date today=new Date();//本月
SerialMonthGenerator smg=new SerailMonthGenerator(today);
if(manager.contains(smg)){
smg=manager.get(manager.indexOf(smg));
}
else{
manager.add(smg);
}
//......
//smg.getNext()取序号串
//..............
}
}
是不是这样的:
200911-001
200911-002
200911-003
200911-004
。
。
。
200911-0030
200912-001
200912-002
200912-003
。
。
。
20101-001
20101-002
----------------------
如果是这样,就好办了。
你可以用java.lang.String.split("-")方法,截取最后的日,然后在日前加"00",不就可以了。