`
superxielei
  • 浏览: 267210 次
  • 性别: 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?

相关推荐

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

    在C#编程中,有时我们需要生成不重复的随机...总的来说,随机生成不重复字符串是一个常见的需求,C#提供了多种实现方式。这两个示例方法虽然简单,但在很多情况下已经足够使用,可以根据具体需求进行适当的优化和调整。

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

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

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

    这样,生成的不重复字符串就会被写入到名为“output.txt”的文本文件中,每个字符串占一行。 标签“随机数”进一步强调了这个任务的核心在于生成随机组合。在实际应用中,我们可能需要根据业务需求调整随机数的生成...

    C# 生成随机字母字符串

    在实际应用中,还可以进一步优化这个功能,比如确保生成的字符串不重复,或者增加对数字和其他特殊字符的支持。此外,对于多线程环境,需要注意`Random`类不是线程安全的,所以每个线程应该有自己的`Random`实例。 ...

    精彩编程与编程技巧-加密字符串算法...

    在这个示例中,密钥可以是任意长度的字符串,但需要注意的是,密钥不应重复,以避免降低加密强度。 - **密钥循环使用**:当密钥长度小于明文长度时,会循环使用密钥直到覆盖所有明文字符。 #### 特殊处理 为了...

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

    总结来说,C#生成不重复随机字符串类通过巧妙地结合时间和类变量作为随机数种子,以及对数字和字母的条件判断,实现了多样化且不重复的字符串生成。这对于创建验证码、ID或任何需要独特标识符的场景都非常有用。...

    生成随机字符串(字符串,数字)

    例如,如果需要生成的随机字符串在特定范围内不能重复,可以使用集合(如HashSet)来检查新生成的字符串是否已存在。若要保证字符分布更均匀,可以使用更复杂的随机数生成算法,或者对生成的字符串进行一定的调整。 ...

    php实现的替换敏感字符串类.zip

    这个类库包含了对非法字符串的检测功能,可以检查用户输入或数据源中是否存在潜在的恶意字符串,如SQL注入、XSS攻击相关的字符或代码片段。例如,它可以检测到引号、分号、尖括号等特殊字符,防止它们被用于执行...

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

    在IT开发领域,生成不重复的编号或标识符是一个常见的需求,特别是在数据库记录、订单号、唯一用户ID等场景。为了满足这一需求,开发者经常利用系统时间作为基础,结合其他算法来生成这样的唯一序列。标题提到的...

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

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

    php 随机生成10位字符代码

    函数体内部使用了`rand()`函数来生成一个随机数,结合`strlen($chars)`来获取字符集合的长度,从而保证可以随机选中`$chars`字符串中的任意位置。`substr($chars, $position, 1)`则用于从`$chars`中截取长度为1的...

    易语言快速取随机字符

    易语言提供了“字符串”类型来表示字符序列,可以通过“取字符串长度”函数获取字符串的长度,通过“连接”函数拼接字符串,通过“取子字符串”函数截取字符串的一部分。随机数则可以通过“生成随机数”函数生成,...

    字符串随机生成小软件

    例如,这个“随机生成字符串.exe”可能提供了以下功能: 1. **长度设定**:用户可以指定生成字符串的最小和最大长度,以适应不同需求。 2. **字符集选择**:可能包括大小写字母、数字、特殊字符等,用户可以根据...

    C#随机字符串生成代码

    在编写测试时,可以使用`Assert.AreEqual()`等方法检查生成的字符串是否符合预期,也可以通过大量重复生成字符串来测试其随机性和效率。 总之,C#提供了一种简单且灵活的方式来生成随机字符串,结合`System.Random`...

    随机生成数字字母字符串

    以下是一个简单的Python示例,展示如何生成一个不包含重复字符的数字字母字符串: ```python import random import string def generate_string(length): all_chars = string.ascii_letters + string.digits # ...

    生成指定随机数不重复的例子(可用)

    在编程领域,生成指定范围内的随机数而不重复是一项常见的需求,尤其在抽奖系统、密码生成或者数据模拟等场景。...对于开发者来说,理解和掌握这种技巧有助于解决各种需要生成不重复随机数的问题。

    java开发技术调用rendom函数,随机生成32位不重复的字符

    在main方法中,我们使用了一个循环来生成50个32位随机字符串,然后将生成的随机字符串打印出来。 四、优点和缺点 使用Random函数生成随机数的优点是非常简单方便,代码量少,效率高。但是,使用Random函数生成...

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

    3. **生成不重复的8位数字字符串**: - 创建一个 `StringBuilder` 对象用于拼接生成的数字。 - 使用一个 `HashSet` 存储已经生成的随机数,避免重复。 - 在循环中,不断生成新的随机数,直到 `HashSet` 的大小...

    进程ID生成字符串.zip

    综上所述,"进程ID生成字符串.zip"可能是一个包含示例代码或工具的压缩包,用于帮助开发者根据进程ID创建具有唯一性的字符串,如MappingName和UniqueProcessID。理解这些概念并能正确应用到实践中,对于进行多进程...

Global site tag (gtag.js) - Google Analytics