`
superxielei
  • 浏览: 262493 次
  • 性别: Icon_minigender_1
  • 来自: 沈阳
社区版块
存档分类
最新评论

生成不重复的字符串来.

    博客分类:
  • java
阅读更多

我们经常会遇到一个需求,就是需要一个唯一的字符串来标示一些东西。比如上传的文件,当然不能重名,通常的做法就是生成一个时间戳来做,但是在高并发的项目中,有时候时间戳也许还不够,于是就再加上一些随机的字符串吧,慢慢地这个方法就出来了。下边是代码。

 

插入特殊字符在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", "!", "@", "#", "$", "%", "^", "&", "(",
			")" };
 

 

2
3
分享到:
评论
5 楼 superxielei 2008-10-17  
嗯UUID也不错。
4 楼 superxielei 2008-10-17  
我并不是生成数据库中的字段,而是生成一个文件夹或者文件的名字。
UUID了解很少,去google一下~
3 楼 java.fan 2008-10-08  
如果你用hibernate,可以直接用它的这个功能
也可以用 jdk里面的 uuid 功能
还有其他方法。看自己实际情况了
2 楼 kongshanxuelin 2008-10-08  
用UUID一句话不就搞定了?还写那么多?不解
1 楼 playfish 2008-10-07  
试试uuid?

相关推荐

    PHP生成指定数量的不重复随机字符串

    可以生成指定数量的不重复随机字符串,支持纯数字、字母和数字组合、字母数字加特殊字符

    C#随机生成不重复字符串的两个不错方法

    今天整理以前一个项目源码,发现两个随机生成不重复字符串的方法,觉得用起来挺方便的,在此贴出来,方便以后查阅。 方法一:随机生成不重复数字字符串 代码如下: private int rep=0; /// &lt;summary&gt; /// 生成随机...

    唯一标示字符串生成工具类

    写了一个生成唯一标识的字符串工具,前面放上去的时候,有人说有可能出现重复的情况,我觉得重复的几率不是没有,但是几乎完全可以不用考虑,我说一下我的生成思想,大家看看几率会有多大:我的生成方式是: 当前的...

    随机生成不重复字段-自定义各个字段长度(陈表达原创).xlsm

    随机生成不重复字段-自定义各个字段长度,批量随机生成多个不重复多段字符串(每个段可自定义长度) 批量随机生成多个不重复多段字符串(每个段可自定义长度) 哪个字段有输入长度,即为生成多少段字符 1、生成10组...

    C#生成不重复字母数字组合的随机数

    包含C#源码 关于C#中随机数生成器 生成不重复子字母组合的随机数 并保存成TXT

    C#生成不重复随机字符串类

    本文实例讲述了C#生成不重复随机字符串类。分享给大家供大家参考。具体如下: 这个C#类用于随机产生不重复的字符串,可以指定字符串范围,可以指定要产生字符串的长度 using System; namespace DotNet.Utilities { ...

    利用时间生成8位不重复数

    在开发过程中,会遇到生成XX编号之类的数据,而且这编号不能重复,所以根据当前时间,生成8位不重复的数.

    大批量生成不重复的递增的字符串。

    1. MySQL造大批量的数据。 2. 按照LOAD DATA statment来导入mysql 3. 优化慢sql准备工作利器。

    VB生成不重复的随机数

    VB生成不重复的随机数 我的建议是:第一步、先做一个数组,存上这35个数(可以不是连续的数,也可以是人名、字符串什么的);第二步、随机生成一个1-35之间的数,输出;第三步:把这个数和数组的第一个单元交换;第...

    Js生成随机数/随机字符串的方法小结【5种方法】

    主要介绍了Js生成随机数/随机字符串的方法,结合实例形式总结分析了5种Js生成随机数/随机字符串的操作技巧,需要的朋友可以参考下

    0到9生成4个8位数的字符串.docx

    //题目:0到9这几个数字生成4个不相同的8位数的字符串,例如12345678,12345687,12345786,123456768 注意,每一个字符串中的数字也是不能重复的 //错误分析:我原来的思路是首先我们要想办法获取一个八位数的字符...

    生成不重复字串

    生成由字母、数字组合的不重复字串(目前小于8位),此算法也适用于数字串加密及压缩.

    python 千万id不重复

    当需要不重复订单id或者不重复字符串

    php生成随机数/生成随机字符串的方法小结【5种方法】

    本文实例讲述了php生成随机数/生成随机字符串的方法。分享给大家供大家参考,具体如下: 有时候我们的项目需要生成随机数,但是又不想那么麻烦,那么我们可以使用下面这5种方法生成。 第一种:mt_rand() &lt;?php ...

    数据库字符串Id生成器

    数据库字符串Id生成器,结合年月日时分秒等封装的id生成器,根据机器码来判定,不可能出现重复的id,数据库使用varchar类型或者bigint类型存储

    python实现在字符串中查找子字符串的方法

    本文实例讲述了python实现在字符串中查找子字符串的方法。分享给大家供大家参考。具体如下: 这里实现python在字符串中查找子... 您可能感兴趣的文章:python判断字符串是否包含子字符串的方法python无限生成不重复(字

    Java生成含字母和数字的6位随机字符串

    主要为大家详细介绍了Java生成含字母和数字的6位随机字符串的相关资料,供大家参考,感兴趣的朋友可以参考一下

    python实现查找两个字符串中相同字符并输出的方法

    本文实例讲述了python实现查找两个字符串中相同字符并输出的方法。... 您可能感兴趣的文章:python实现在字符串中查找子字符串的方法python判断字符串是否包含子字符串的方法python无限生成不重复(字母,数

Global site tag (gtag.js) - Google Analytics