黑客日教程-在Java中如何创建随机字符串:常规 vs Apache Commons Lang库

本文介绍如何使用标准Java代码和Apache Commons Lang库生成无限制及受限的随机字符串,包括小写字母、字母数字组合等,提供了实用的代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

来自

 

编译: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的。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值