📄 idgenerator.java
字号:
package com.web.util;
import java.util.*;
import java.sql.*;
//import oracle.jdbc.driver.OracleDriver;
/**
*唯一键生成器
*
*@version 1.0
*/
public class IDGenerator
{
String[] formatStr;
String linkChar;
/**
*构造器,UA表示大写字母,LA表示小写字母,A表是任意字母.N表示数字
*@param formatStr[] 格式字符串数组,例如"{A3,N3}"的含义是前边是任意字母长为三位,后边是任意数字长为三位中间用"-"连接.
*/
public IDGenerator(String formatStr[],String linkChar)throws Exception
{
//检查formatStr的合法性
for(int i=0;i<formatStr.length;i++)
{
if(!(formatStr[i].indexOf("UA")!=-1 || formatStr[i].indexOf("LA")!=-1 || formatStr[i].indexOf("N")!=-1 || formatStr[i].indexOf("A")!=-1 || formatStr[i].indexOf("AN")!=-1))
throw new Exception("formatStr参数有错误,请参照相关文档.");
}
this.formatStr=formatStr;
this.linkChar=linkChar;
}
/**
*生成ID号
*@return 符合要求的ID号
*/
public String getID()
{
return generateID();
}
/**
*生成ID号长度
*@return ID号长度
*/
public int getIDLength()
{
int len=0;
String str="";
for(int i=0;i<formatStr.length;i++)
{
str=formatStr[i];
if(str.indexOf("UA")!=-1)
{
//大写字母
len=len + Integer.valueOf(str.substring(2,str.length())).intValue();
}else if(str.indexOf("LA")!=-1){
//小写字母
len=Integer.valueOf(str.substring(2,str.length())).intValue();
}else if(str.indexOf("AN")!=-1){
//字母数字混合
len=len + Integer.valueOf(str.substring(2,str.length())).intValue();
}else if(str.indexOf("N")!=-1){
//数字
len=len + Integer.valueOf(str.substring(1,str.length())).intValue();
}else if(str.indexOf("A")!=-1){
//大小写混合
len=len + Integer.valueOf(str.substring(1,str.length())).intValue();
}//if
}//for
len=linkChar.length() * (formatStr.length-1) + len;
return len;
}
//产生ID号
protected String generateID()
{
String str=null;
StringBuffer result=new StringBuffer("");
for(int i=0;i<formatStr.length;i++)
{
str=formatStr[i];
if(str.indexOf("UA")!=-1)
{
//大写字母
int len=Integer.valueOf(str.substring(2,str.length())).intValue();
int num=0;
for(int j=0;j<len;j++)
{
num=(int)Math.floor((Math.random()*26)) + 'A';
result.append((char)num);
}
}else if(str.indexOf("LA")!=-1){
//小写字母
int len=Integer.valueOf(str.substring(2,str.length())).intValue();
int num=0;
for(int j=0;j<len;j++)
{
num=(int)Math.floor((Math.random()*26)) + 'a';
result.append((char)num);
}
}else if(str.indexOf("AN")!=-1){
//字母数字混合
int len=Integer.valueOf(str.substring(2,str.length())).intValue();
int num=0;
int select=0;
for(int j=0;j<len;j++)
{
select=(int)Math.floor((Math.random()*2));
if(select==0)
num=(int)Math.floor((Math.random()*26)) + 'a';
else if(select==1)
num=(int)Math.floor((Math.random()*26)) + 'A';
else
num=(int)(Math.random()*9) + '0';
result.append((char)num);
}//for
}else if(str.indexOf("N")!=-1){
//数字
int len=Integer.valueOf(str.substring(1,str.length())).intValue();
int num=0;
for(int j=0;j<len;j++)
{
num=(int)(Math.random()*9) + '0';
result.append((char)num);
}
}else if(str.indexOf("A")!=-1){
//大小写混合
int len=Integer.valueOf(str.substring(1,str.length())).intValue();
int num=0;
int select=0;
for(int j=0;j<len;j++)
{
select=(int)Math.floor((Math.random()*2));
if(select==0)
num=(int)Math.floor((Math.random()*26)) + 'a';
else
num=(int)Math.floor((Math.random()*26)) + 'A';
result.append((char)num);
}
}//if
result.append(linkChar);
}//for
String tmpString=result.toString().substring(0,result.toString().length()-linkChar.length());
return tmpString;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -