package org.jinsheng.util;
import java.util.Random;
/**
* org.jinsheng.util.RandomString.java
* <p>
* 描述:此类用于获取随机字符串
* </p>
* <p>
* 时间:2009-9-16
* </p>
*
* @author jinsheng
* @version 1.0
*/
public class RandomString
{
private final String splitStr = " "; // 分割符
// 取数字字符串 用 splitStr 分割
private String getNumberString()
{
StringBuffer buf = new StringBuffer();
for (int i = 0; i < 10; i++)
{
buf.append(String.valueOf(i));
buf.append(splitStr);
}
return buf.toString();
}
// 取大写字母字符串 用 splitStr 分割
private String getUppercase()
{
StringBuffer buf = new StringBuffer();
for (int i = 0; i < 26; i++)
{
buf.append(String.valueOf((char) ('A' + i)));
buf.append(splitStr);
}
return buf.toString();
}
// 取小写字母字符串 用 splitStr 分割
private String getLowercase()
{
StringBuffer buf = new StringBuffer();
for (int i = 0; i < 26; i++)
{
buf.append(String.valueOf((char) ('a' + i)));
buf.append(splitStr);
}
return buf.toString();
}
// 取特殊字符串 用 splitStr 分割
private String getSpecialString()
{
String str = "~@#$%^&*()_+|\\=-`";
StringBuffer buf = new StringBuffer();
for (int i = 0; i < str.length(); i++)
{
buf.append(str.substring(i, i + 1));
buf.append(splitStr);
}
return buf.toString();
}
// 根据所取的字符串类型连接相应的字符串并返回
private String getString(String type)
{
StringBuffer pstr = new StringBuffer();
if (type.length() > 0)
{
if (type.indexOf('i') != -1)
pstr.append(this.getNumberString());
if (type.indexOf('l') != -1)
pstr.append(this.getLowercase());
if (type.indexOf('u') != -1)
pstr.append(this.getUppercase());
if (type.indexOf('s') != -1)
pstr.append(this.getSpecialString());
}
return pstr.toString();
}
/**
* 取随机字符串
*
* @param length
* 返回随机字符串的长度
* @param type
* 要取的字符串类型:
* i、取数字
* l、取小写字母
* u、取大写字母
* s、取特殊字符
* @return String 随机字符串
*/
public String getRandomString(int length, String type)
{
String allStr = this.getString(type);
String[] arrStr = allStr.split(splitStr);
StringBuffer pstr = new StringBuffer();
if (length > 0)
{
for (int i = 0; i < length; i++)
{
pstr.append(arrStr[new Random().nextInt(arrStr.length)]);
}
}
return pstr.toString();
}
// 测试
public static void main(String[] args)
{
System.out.println("type=i:"
+ new RandomString().getRandomString(10, "i"));
System.out.println("type=il:"
+ new RandomString().getRandomString(10, "il"));
System.out.println("type=ilu:"
+ new RandomString().getRandomString(10, "ilu"));
System.out.println("type=ilus:"
+ new RandomString().getRandomString(10, "ilus"));
for (int i = 0; i < 100; i++)
System.out.println("type=ilus:"
+ new RandomString().getRandomString(10, "ilus"));
}
}
最近无聊写了这么一个类,实现获取随机字符串的类,如果各位有什么高招请指教指教小弟,呵呵。
分享到:
- 2009-09-16 13:51
- 浏览 4661
- 评论(0)
- 论坛回复 / 浏览 (0 / 3268)
- 查看更多
相关推荐
Java也有类似的方法,可以使用`java.util.Random`类和`Character`类来生成随机字符串: ```java import java.util.Random; public class RandomStringGenerator { public static String generate(int length) { ...
在Java编程中,数字字符串排序是一项常见的任务,特别是在处理大量数据时。本示例着重讨论如何对百万级的数字字符串进行高效排序。标题中的“java源码数字字符串排序”指的是利用Java语言实现的一种优化策略,可能...
【Java 随机取字符串的工具类】和【描述】中提到的焦点在于Java如何生成随机字符串,以及Java中的`Random`类是如何工作的。在Java编程中,生成随机数和随机字符串对于各种应用场景至关重要,如模拟随机选择、数据...
java生成16位随机数
随机生成8位字符密码,包括1位特殊字符,1位数字,1位小写字母,1位大写字母,其余4位随机
这意味着可以在不同的线程中随机字符串 该库为每个对create()调用创建一个字符串。 它不提供任何并发或流。 这完全取决于开发人员如何使用它。 Java互操作 该库可以在Java 10+中使用。 参见。 用法 配置 首先,我们...
本项目“java_code.rar”聚焦于Java实现的字符串加密解密技术,旨在提供一个实用的解决方案来保护敏感信息。 首先,我们需要理解加密和解密的基本概念。加密是将明文(可读信息)转化为密文(不可读信息)的过程,...
在循环中,我们生成随机索引,如果该字符已被使用,则跳过,否则将字符添加到结果数组`chr1`中,并标记为已使用。当`j>=4`时,即四个字符都已找到,跳出循环并返回`chr1`。 ```java public static char[] checkcode...
`RandomUtils`是一个非常实用的工具类,它提供了一系列的方法来生成各种类型的随机数,包括整数、浮点数以及随机字符串。在本文中,我们将详细探讨`RandomUtils`类中的功能和使用方法,尤其是生成随机字符串的相关...
Java作为一种强大的编程语言,提供了丰富的工具和方法来解决此类问题。下面我们将深入探讨这个问题的解决方案、相关算法以及Java中的实现细节。 首先,我们需要理解什么是排列组合。排列是指从n个不同元素中取出m...
下面将详细介绍这些解析器的工作原理以及它们在生成XML并返回XML字符串形式时的应用。 1. DOM (Document Object Model) DOM是一种基于树形结构的XML解析模型,它将整个XML文档加载到内存中,形成一个完整的文档对象...
本文将深入探讨Java中的字符串操作,包括字符串的遍历、类型转换、字符串分割以及取子串等核心概念。 首先,让我们来看看如何遍历一个Java字符串。有三种常见的方法: 1. 使用for循环,通过`str.length()`获取字符...
设定字符串为“张三,你好,我是李四” 产生张三的密钥对(keyPairZhang) 张三生成公钥(publicKeyZhang)并发送给李四,这里发送的是公钥的数组字节 通过网络或磁盘等方式,把公钥编码传送给李四,李四接收到...
3. 这样得到的8位十六进制字符串即为不重复的随机码。例如,如果当前时间戳为1368474471,转换为十六进制可能是"53e1b61b",若只需8位,可以取前8位"53e1b61"。 在Java中,可以使用`java.lang.Long.toHexString()`...
接着,我们只取这个字符串的前16位,这样就得到了一个16位的16进制数字字符串。最后,我们使用`Long.parseLong()`方法将这个16进制字符串转换为Long类型,从而得到一个16位的纯数字Long型UUID。 这个工具类的使用...
这个小程序的核心功能是读取字符并能够每次提取出不同的字符,这在编程中涉及到了字符串处理和随机访问的概念。在IT行业中,字符处理是基础且重要的技能,尤其在文本处理、数据分析以及用户交互等场景中。下面我们将...
例如,`nextInt(6)`会生成0到5之间的随机整数。 - `nextDouble()`方法则生成一个0.0到1.0之间的双精度浮点数,精度可达到1.0的二进制补码表示的下一位。 示例代码: ```java import java.util.Random; ...
设定字符串为“张三,你好,我是李四” 产生张三的密钥对(keyPairZhang) 张三生成公钥(publicKeyZhang)并发送给李四,这里发送的是公钥的数组字节 通过网络或磁盘等方式,把公钥编码传送给李四,李四接收到...
设定字符串为“张三,你好,我是李四” 产生张三的密钥对(keyPairZhang) 张三生成公钥(publicKeyZhang)并发送给李四,这里发送的是公钥的数组字节 通过网络或磁盘等方式,把公钥编码传送给李四,李四接收到...