java 产生递增字符串

作者&投稿:丘山 (若有异议请与网页底部的电邮联系)
java如何获取保证唯一的递增的序列号字符串~

按GB/T14486-MT3角度7

package test;import java.util.Collections;import java.util.Comparator;import java.util.LinkedList;import java.util.regex.Matcher;import java.util.regex.Pattern;public class Tester{private static boolean isASC ( String group ){if (group.isEmpty ()){return false;}else if (group.length () == 1){return true;}else{int a = Integer.parseInt (group.charAt (0) + "");int b = Integer.parseInt (group.charAt (1) + "");if (b - a != 1){return false;}else{return isASC (group.substring (1));}}}public static void main ( String[] args ){String input = "abcd5678bbw1357f123";String regex = "\\d+";Pattern pattern = Pattern.compile (regex);Matcher matcher = pattern.matcher (input);LinkedList result = new LinkedList ();while (matcher.find ()){String group = matcher.group ();if (isASC (group)){result.add (group);}}Collections.sort (result, new Comparator (){@Overridepublic int compare ( String o1, String o2 ){if (o1.length () > o2.length ()){return -1;}else if (o1.length () < o2.length ()){return 1;}else{return 0;}}});for ( String string : result ){if (string.length () == result.get (0).length ()){System.out.println (string);}}}}

比如你把你的数据都存在数据库里。
把你们这字符串分为两部分,前面取系统日期(在数据库中的字段为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<SerialMonthGenerator>manager;
public static void main(String[] args){
new MyApp();
}
public MyApp(){
//.......
manager=new Vector<SerialMonthGenerator>();
//......
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",不就可以了。


瑞安市17067468984: java 产生递增字符串 -
箕琴甘缘: 比如你把你的数据都存在数据库里.把你们这字符串分为两部分,前面取系统日期(在数据库中的字段为date),后面做一个整型变量(times).然后系统日期取出来后,搜索数据库date字段,如果找到了相同相同日期的数据了,就取times字段里最高的数据然后自动加1,如果没找到相同的date字段,就设置为001.显示输出的时候只要把两个字段的数据转为字符串,整理合并下就可以了.

瑞安市17067468984: 使用JAVA如何去生成大量16位的并且是顺序递增的数字串? -
箕琴甘缘: 用一个转化字符串的方法即可 看下面的例子int count = 一个数;String salSeqNo = String.format("%016d",count);以上可以试一试

瑞安市17067468984: 用Java编写 求一个字符串s的最大连续递增数字子串. -
箕琴甘缘: package test; import java.util.Collections; import java.util.Comparator; import java.util.LinkedList; import java.util.regex.Matcher; import java.util.regex.Pattern; public class Tester { private static boolean isASC ( String group ) { e68a84e8a2ade799bee...

瑞安市17067468984: java编写一个程序,10个字符串,按每个字符串第一个单词长度递增排序 -
箕琴甘缘: 例子:import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.List; public class TempTest { public static void main(String[] args) throws Exception { List<String> lst = new ArrayList<String>(); lst.add("abcd ...

瑞安市17067468984: 求救,java中怎么让一串字符串自增 -
箕琴甘缘: 字符串自增,是什么情况,你想要达到什么样的效果. 比如“@#¥%”这个字符串自增后,你想要得到什么.

瑞安市17067468984: JAVA自增字串符的设置? -
箕琴甘缘: 数字类型,转成字符串后,可以取得长度,即位数,然后可以进行补位数这样的处理

瑞安市17067468984: 如何递增一个数字C# java都可以 -
箕琴甘缘: int i=1; for(;i<9999;i++) {if(i>999)System.out.println(i);else if(i>99)System.out.println("0"+i);else if(i>9)System.out.println("00"+i);elseSystem.out.println("000"+i); }

瑞安市17067468984: java如何生成依次递增1的项目标号?项目编号的格式是“XM2015 - 000“ -
箕琴甘缘: 一种 建一个序列 每次进去方法查一次 然后加上前缀“XM2015-" 二种 查当前表的上一条记录 截取后再 +1

瑞安市17067468984: JAVA倒序输出字符串 -
箕琴甘缘: 倒序可以直接用StringBuffer String str = "ssssdddffadf"; StringBuffer reverseStr = new StringBuffer(str).reverse(); System.out.println("reverseStr:"+reverseStr); 这样就可以了啊

瑞安市17067468984: java中 实现字符串的操作 -
箕琴甘缘: 楼下两位别瞎BB了 楼主看好代码了:public static String check(String sr, String sccc, StringBuffer sb) throws Exception {// 先去掉所有的, 获取到每个值// 遍历 将上面的值 截取-// 遍历 将上面的值 截取$ for (String src : sr.split("\\" + sccc)) {// ...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网