java 生成随机字符串

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库创建有限定范围和无限定范围字符串。

你可能感兴趣的:(工具软件)