java 生成随机字符串
本文我们介绍java中如何生成随机字符串,首先介绍标准java库,然后介绍the Apache Commons Lang library。
java生成随机无限定字符串
首先简单生成7个字符的随机字符串:
@Test
public void givenUsingPlainJava_whenGeneratingRandomStringUnbounded_thenCorrect() {
byte[] array = new byte[7]; // length is bounded by 7
new Random().nextBytes(array);
String generatedString = new String(array, Charset.forName("UTF-8"));
System.out.println(generatedString);
}
注意输出字符串不仅是字母或数字。
java生成随机限定字符串
下面我们生成一定范围的随机字符串,范围为小写字母并设定长度:
@Test
public void givenUsingPlainJava_whenGeneratingRandomStringBounded_thenCorrect() {
int leftLimit = 97; // letter 'a'
int rightLimit = 122; // letter 'z'
int targetStringLength = 10;
Random random = new Random();
StringBuilder buffer = new StringBuilder(targetStringLength);
for (int i = 0; i < targetStringLength; i++) {
int randomLimitedInt = leftLimit + (int)
(random.nextFloat() * (rightLimit - leftLimit + 1));
buffer.append((char) randomLimitedInt);
}
String generatedString = buffer.toString();
System.out.println(generatedString);
}
Apache Commons Lang 生成随机限定字符串
Apache Commons Lang 库提供很多随机生成字符串方法,下面看如何生成字母字符串:
@Test
public void givenUsingApache_whenGeneratingRandomStringBounded_thenCorrect() {
int length = 10;
boolean useLetters = true;
boolean useNumbers = false;
String generatedString = RandomStringUtils.random(length, useLetters, useNumbers);
System.out.println(generatedString);
}
相比于java实现代码,仅一行就能轻松实现。
Apache Commons Lang 生成字母字符串
再看一个简单示例,限定输出为字母字符,但无需传入布尔参数:
@Test
public void givenUsingApache_whenGeneratingRandomAlphabeticString_thenCorrect() {
String generatedString = RandomStringUtils.randomAlphabetic(10);
System.out.println(generatedString);
}
Apache Commons Lang 生成字母和数字字符串
最后,我们限定输出范围为(a-z, A-Z) 和数字 0-9:
@Test
public void givenUsingPlainJava_whenGeneratingRandomStringUnbounded_thenCorrect() {
byte[] array = new byte[7]; // length is bounded by 7
new Random().nextBytes(array);
String generatedString = new String(array, Charset.forName("UTF-8"));
System.out.println(generatedString);
}
分别使用标准Java api或Apache Commons库创建有限定范围和无限定范围字符串。
总结
本文介绍两种方法生成随机字符串,通过标准Java api或Apache Commons库创建有限定范围和无限定范围字符串。
本文参考链接:https://blog.csdn.net/neweastsun/article/details/80685854