来自
编译:https://www.baeldung.com/java-random-string
本文将分别展示如何利用标准java代码和Apache Commons Lang包创建随机字符串。
本文属于Baeldung“Java-回到基础”系列。
1、在Java中创建随机的没有限制的字符串
创建7个字符的随机字符串
1 2 3 4 5 6 7 8 | @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、创建随机受限的字符串
看一个受限的随机字符串例子。我们来创建一个小写字母、固定长度的随机字符串。
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 | @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库对随机字符串产生有很多方法。先看一个受限的只有字母的字符串。
01 02 03 04 05 06 07 08 09 10 | @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参数。
1 2 3 4 5 6 | @Test public void givenUsingApache_whenGeneratingRandomAlphabeticString_thenCorrect() { String generatedString = RandomStringUtils.randomAlphabetic( 10 ); System.out.println(generatedString); } |
5 用Apache Commons Lang创建字母数字字符串
最后,看一下带数字的受限的随机字符串:
1 2 3 4 5 6 | @Test public void givenUsingApache_whenGeneratingRandomAlphanumericString_thenCorrect() { String generatedString = RandomStringUtils.randomAlphanumeric( 10 ); System.out.println(generatedString); } |
6 结论
通过常规JAVA代码或Apache Commons库都可以创建受限或没有限制的字符串。
所以这些例子可以在github项目中找到。这些项目是基于maven的。