我们经常会遇到一个需求,就是需要一个唯一的字符串来标示一些东西。比如上传的文件,当然不能重名,通常的做法就是生成一个时间戳来做,但是在高并发的项目中,有时候时间戳也许还不够,于是就再加上一些随机的字符串吧,慢慢地这个方法就出来了。下边是代码。
插入特殊字符在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", "!", "@", "#", "$", "%", "^", "&", "(",
")" };
分享到:
相关推荐
可以生成指定数量的不重复随机字符串,支持纯数字、字母和数字组合、字母数字加特殊字符
在C#编程中,有时我们需要生成不重复的随机...总的来说,随机生成不重复字符串是一个常见的需求,C#提供了多种实现方式。这两个示例方法虽然简单,但在很多情况下已经足够使用,可以根据具体需求进行适当的优化和调整。
这样,生成的不重复字符串就会被写入到名为“output.txt”的文本文件中,每个字符串占一行。 标签“随机数”进一步强调了这个任务的核心在于生成随机组合。在实际应用中,我们可能需要根据业务需求调整随机数的生成...
在实际应用中,还可以进一步优化这个功能,比如确保生成的字符串不重复,或者增加对数字和其他特殊字符的支持。此外,对于多线程环境,需要注意`Random`类不是线程安全的,所以每个线程应该有自己的`Random`实例。 ...
在这个示例中,密钥可以是任意长度的字符串,但需要注意的是,密钥不应重复,以避免降低加密强度。 - **密钥循环使用**:当密钥长度小于明文长度时,会循环使用密钥直到覆盖所有明文字符。 #### 特殊处理 为了...
总结来说,C#生成不重复随机字符串类通过巧妙地结合时间和类变量作为随机数种子,以及对数字和字母的条件判断,实现了多样化且不重复的字符串生成。这对于创建验证码、ID或任何需要独特标识符的场景都非常有用。...
例如,如果需要生成的随机字符串在特定范围内不能重复,可以使用集合(如HashSet)来检查新生成的字符串是否已存在。若要保证字符分布更均匀,可以使用更复杂的随机数生成算法,或者对生成的字符串进行一定的调整。 ...
这个类库包含了对非法字符串的检测功能,可以检查用户输入或数据源中是否存在潜在的恶意字符串,如SQL注入、XSS攻击相关的字符或代码片段。例如,它可以检测到引号、分号、尖括号等特殊字符,防止它们被用于执行...
在IT开发领域,生成不重复的编号或标识符是一个常见的需求,特别是在数据库记录、订单号、唯一用户ID等场景。为了满足这一需求,开发者经常利用系统时间作为基础,结合其他算法来生成这样的唯一序列。标题提到的...
写了一个生成唯一标识的字符串工具,前面放上去的时候,有人说有可能出现重复的情况,我觉得重复的几率不是没有,但是几乎完全可以不用考虑,我说一下我的生成思想,大家看看几率会有多大:我的生成方式是: 当前的...
函数体内部使用了`rand()`函数来生成一个随机数,结合`strlen($chars)`来获取字符集合的长度,从而保证可以随机选中`$chars`字符串中的任意位置。`substr($chars, $position, 1)`则用于从`$chars`中截取长度为1的...
易语言提供了“字符串”类型来表示字符序列,可以通过“取字符串长度”函数获取字符串的长度,通过“连接”函数拼接字符串,通过“取子字符串”函数截取字符串的一部分。随机数则可以通过“生成随机数”函数生成,...
例如,这个“随机生成字符串.exe”可能提供了以下功能: 1. **长度设定**:用户可以指定生成字符串的最小和最大长度,以适应不同需求。 2. **字符集选择**:可能包括大小写字母、数字、特殊字符等,用户可以根据...
在编写测试时,可以使用`Assert.AreEqual()`等方法检查生成的字符串是否符合预期,也可以通过大量重复生成字符串来测试其随机性和效率。 总之,C#提供了一种简单且灵活的方式来生成随机字符串,结合`System.Random`...
以下是一个简单的Python示例,展示如何生成一个不包含重复字符的数字字母字符串: ```python import random import string def generate_string(length): all_chars = string.ascii_letters + string.digits # ...
在编程领域,生成指定范围内的随机数而不重复是一项常见的需求,尤其在抽奖系统、密码生成或者数据模拟等场景。...对于开发者来说,理解和掌握这种技巧有助于解决各种需要生成不重复随机数的问题。
在main方法中,我们使用了一个循环来生成50个32位随机字符串,然后将生成的随机字符串打印出来。 四、优点和缺点 使用Random函数生成随机数的优点是非常简单方便,代码量少,效率高。但是,使用Random函数生成...
3. **生成不重复的8位数字字符串**: - 创建一个 `StringBuilder` 对象用于拼接生成的数字。 - 使用一个 `HashSet` 存储已经生成的随机数,避免重复。 - 在循环中,不断生成新的随机数,直到 `HashSet` 的大小...
综上所述,"进程ID生成字符串.zip"可能是一个包含示例代码或工具的压缩包,用于帮助开发者根据进程ID创建具有唯一性的字符串,如MappingName和UniqueProcessID。理解这些概念并能正确应用到实践中,对于进行多进程...