Skip to main content
 首页 » 编程设计

java 生成随机字符串

2022年07月19日182lori

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