本文将分别展示如何利用标准java代码和Apache Commons Lang包创建随机字符串。
本文属于Baeldung“Java-回到基础”系列。
1、在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);
注意:产生的字符串就是无意义的字母。
2、创建随机受限的字符串
看一个受限的随机字符串例子。我们来创建一个小写字母、固定长度的随机字符串。
@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);
}
3、用Apache Commons Lang创建一个受限的随机字符串
Aapche 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示例中的所有偏底层的代码。
4 用Apache Commons Lang创建字母字符串
另外一个简单的示例:创建只有字母的字符串。如下所示,没有传任何boolean参数。
@Test
public void givenUsingApache_whenGeneratingRandomAlphabeticString_thenCorrect() {
String generatedString = RandomStringUtils.randomAlphabetic(10);
System.out.println(generatedString);
}
5 用Apache Commons Lang创建字母数字字符串
最后,看一下带数字的受限的随机字符串:
@Test
public void givenUsingApache_whenGeneratingRandomAlphanumericString_thenCorrect() {
String generatedString = RandomStringUtils.randomAlphanumeric(10);
System.out.println(generatedString);
}
6 结论
通过常规JAVA代码或Apache Commons库都可以创建受限或没有限制的字符串。
所以这些例子可以在github项目中找到。这些项目是基于maven的。