在Java中如何创建随机字符串:常规 vs Apache Commons Lang库

编译:https://www.baeldung.com/java-random-string

本文将分别展示如何利用标准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的。

你可能感兴趣的:(在Java中如何创建随机字符串:常规 vs Apache Commons Lang库)