我们经常会遇到一个需求,就是需要一个唯一的字符串来标示一些东西。比如上传的文件,当然不能重名,通常的做法就是生成一个时间戳来做,但是在高并发的项目中,有时候时间戳也许还不够,于是就再加上一些随机的字符串吧,慢慢地这个方法就出来了。下边是代码。
插入特殊字符在linux下可以正常使用,在windows总有的符号不能做文件名。
/**
* 生成唯一字符串
* 作者:解镭 Email:xielei@live.com
* 创建日期:May 14, 2008
* 创建时间: 5:07:39 PM
* @param length 需要长度
* @param symbol 是否允许出现特殊字符 -- !@#$%^&*()
* @return
*/
public static String getUniqueString(int length, boolean symbol)
throws Exception {
Random ran = new Random();
int num = ran.nextInt(61);
String returnString = "";
String str = "";
for (int i = 0; i < length;) {
if (symbol)
num = ran.nextInt(70);
else
num = ran.nextInt(61);
str = strArray[num];
if (!(returnString.indexOf(str) >= 0)) {
returnString += str;
i++;
}
}
return returnString;
}
/**
* 生成唯一字符串 会已时间 加上你需要数量的随机字母
* 如:getUniqueString(6,true,"yyyyMMddHHmmss")
* 返回:20080512191554juHkn4
* 作者:解镭 Email:xielei@live.com
* 创建日期:May 14, 2008
* 创建时间: 5:07:39 PM
* @param length 需要长度
* @param symbol 是否允许出现特殊字符 -- !@#$%^&*()
* @param dateformat 时间格式字符串
* @return
*/
public static String getUniqueString(int length, boolean symbol,
String dateformat) throws Exception {
Random ran = new Random();
int num = ran.nextInt(61);
Calendar d = Calendar.getInstance();
Date nowTime = d.getTime();
SimpleDateFormat sf = new SimpleDateFormat(dateformat);
String returnString = sf.format(nowTime);
String str = "";
for (int i = 0; i < length;) {
if (symbol)
num = ran.nextInt(70);
else
num = ran.nextInt(61);
str = strArray[num];
if (!(returnString.indexOf(str) >= 0)) {
returnString += str;
i++;
}
}
return returnString;
}
/**
* 给生成唯一字符串使用
*/
private static String[] strArray = new String[] { "a", "b", "c", "d", "e",
"f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r",
"s", "t", "u", "v", "w", "x", "y", "z", "A", "B", "C", "D", "E",
"F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R",
"S", "T", "U", "V", "W", "X", "Y", "Z", "0", "1", "2", "3", "4",
"5", "6", "7", "8", "9", "!", "@", "#", "$", "%", "^", "&", "(",
")" };
分享到:
相关推荐
可以生成指定数量的不重复随机字符串,支持纯数字、字母和数字组合、字母数字加特殊字符
今天整理以前一个项目源码,发现两个随机生成不重复字符串的方法,觉得用起来挺方便的,在此贴出来,方便以后查阅。 方法一:随机生成不重复数字字符串 代码如下: private int rep=0; /// <summary> /// 生成随机...
写了一个生成唯一标识的字符串工具,前面放上去的时候,有人说有可能出现重复的情况,我觉得重复的几率不是没有,但是几乎完全可以不用考虑,我说一下我的生成思想,大家看看几率会有多大:我的生成方式是: 当前的...
随机生成不重复字段-自定义各个字段长度,批量随机生成多个不重复多段字符串(每个段可自定义长度) 批量随机生成多个不重复多段字符串(每个段可自定义长度) 哪个字段有输入长度,即为生成多少段字符 1、生成10组...
包含C#源码 关于C#中随机数生成器 生成不重复子字母组合的随机数 并保存成TXT
本文实例讲述了C#生成不重复随机字符串类。分享给大家供大家参考。具体如下: 这个C#类用于随机产生不重复的字符串,可以指定字符串范围,可以指定要产生字符串的长度 using System; namespace DotNet.Utilities { ...
在开发过程中,会遇到生成XX编号之类的数据,而且这编号不能重复,所以根据当前时间,生成8位不重复的数.
1. MySQL造大批量的数据。 2. 按照LOAD DATA statment来导入mysql 3. 优化慢sql准备工作利器。
VB生成不重复的随机数 我的建议是:第一步、先做一个数组,存上这35个数(可以不是连续的数,也可以是人名、字符串什么的);第二步、随机生成一个1-35之间的数,输出;第三步:把这个数和数组的第一个单元交换;第...
主要介绍了Js生成随机数/随机字符串的方法,结合实例形式总结分析了5种Js生成随机数/随机字符串的操作技巧,需要的朋友可以参考下
//题目:0到9这几个数字生成4个不相同的8位数的字符串,例如12345678,12345687,12345786,123456768 注意,每一个字符串中的数字也是不能重复的 //错误分析:我原来的思路是首先我们要想办法获取一个八位数的字符...
生成由字母、数字组合的不重复字串(目前小于8位),此算法也适用于数字串加密及压缩.
当需要不重复订单id或者不重复字符串
本文实例讲述了php生成随机数/生成随机字符串的方法。分享给大家供大家参考,具体如下: 有时候我们的项目需要生成随机数,但是又不想那么麻烦,那么我们可以使用下面这5种方法生成。 第一种:mt_rand() <?php ...
数据库字符串Id生成器,结合年月日时分秒等封装的id生成器,根据机器码来判定,不可能出现重复的id,数据库使用varchar类型或者bigint类型存储
本文实例讲述了python实现在字符串中查找子字符串的方法。分享给大家供大家参考。具体如下: 这里实现python在字符串中查找子... 您可能感兴趣的文章:python判断字符串是否包含子字符串的方法python无限生成不重复(字
主要为大家详细介绍了Java生成含字母和数字的6位随机字符串的相关资料,供大家参考,感兴趣的朋友可以参考一下
本文实例讲述了python实现查找两个字符串中相同字符并输出的方法。... 您可能感兴趣的文章:python实现在字符串中查找子字符串的方法python判断字符串是否包含子字符串的方法python无限生成不重复(字母,数