Java –如何生成随机字符串

很少有Java示例向您展示如何生成具有固定长度的随机字母数字字符串。

1.随机[a-ZA-Z0-9]

1.1生成长度为8的随机字母数字字符串[a-ZA-Z0-9]

RandomExample.java
package com.mkyong;

import java.security.SecureRandom;

public class RandomExample {

    private static final String CHAR_LOWER = "abcdefghijklmnopqrstuvwxyz";
    private static final String CHAR_UPPER = CHAR_LOWER.toUpperCase();
    private static final String NUMBER = "0123456789";

    private static final String DATA_FOR_RANDOM_STRING = CHAR_LOWER + CHAR_UPPER + NUMBER;
    private static SecureRandom random = new SecureRandom();

    public static void main(String[] args) {

        System.out.println("String : " + DATA_FOR_RANDOM_STRING);

        for (int i = 0; i < 5; i++) {
            System.out.println("result : " + generateRandomString(8));
            System.out.println("\n");
        }

    }

    public static String generateRandomString(int length) {
        if (length < 1) throw new IllegalArgumentException();

        StringBuilder sb = new StringBuilder(length);
        for (int i = 0; i < length; i++) {

			// 0-62 (exclusive), random returns 0-61
            int rndCharAt = random.nextInt(DATA_FOR_RANDOM_STRING.length());
            char rndChar = DATA_FOR_RANDOM_STRING.charAt(rndCharAt);

            // debug
            System.out.format("%d\t:\t%c%n", rndCharAt, rndChar);

            sb.append(rndChar);

        }

        return sb.toString();

    }

}

输出量

String : abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789

35	:	J
6	:	g
45	:	T
45	:	T
28	:	C
41	:	P
38	:	M
53	:	1
result : JgTTCPM1


16	:	q
16	:	q
31	:	F
34	:	I
30	:	E
58	:	6
1	:	b
38	:	M
result : qqFIE6bM


6	:	g
8	:	i
34	:	I
31	:	F
59	:	7
37	:	L
58	:	6
41	:	P
result : giIF7L6P


16	:	q
31	:	F
59	:	7
45	:	T
55	:	3
30	:	E
30	:	E
59	:	7
result : qF7T3EE7


9	:	j
14	:	o
37	:	L
49	:	X
7	:	h
59	:	7
53	:	1
17	:	r
result : joLXh71r

2. Apache Commons Lang

pom.xml
<dependency>
	  <groupId>org.apache.commons</groupId>
	  <artifactId>commons-lang3</artifactId>
	  <version>3.9</version>
	</dependency>
CommonLangExample.java
package com.mkyong;

import org.apache.commons.lang3.RandomStringUtils;

public class CommonLangExample {

    public static void main(String[] args) {

        System.out.println("\n[0-9]");

        for (int i = 0; i < 5; i++) {
            System.out.println(RandomStringUtils.randomNumeric(10));
        }

        System.out.println("\n[a-zA-Z]");

        for (int i = 0; i < 5; i++) {
            System.out.println(RandomStringUtils.randomAlphabetic(10));
        }

        System.out.println("\n[a-zA-Z0-9]");

        for (int i = 0; i < 5; i++) {
            System.out.println(RandomStringUtils.randomAlphanumeric(10));
        }

    }

}

输出量

[0-9]
9210279856
5752527714
9990371127
8726804704
3122660564

[a-zA-Z]
RoBKeGEXjn
qEirzwwvDB
QblTQrRRCz
qfLzdGWRFC
TPKoFpdlPJ

[a-zA-Z0-9]
eLLKjFGjdS
qCR6gRrS2R
RSkDkWoEb7
zx42NHWosf
KorCbSGDwQ

3. UUID

生成由32个字母数字字符(十六进制)和4个连字符组成的随机字符串,读取此UUID格式

UUIDExample.java
package com.mkyong;

import java.util.UUID;

public class UUIDExample {

    public static void main(String[] args) {

        for (int i = 0; i < 10; i++) {
            System.out.println(generateRandomStringByUUIDNoDash());
        }

        for (int i = 0; i < 10; i++) {
            System.out.println(generateRandomStringByUUIDNoDash());
        }

    }

    public static String generateRandomStringByUUID() {
        return UUID.randomUUID().toString();
    }

    public static String generateRandomStringByUUIDNoDash() {
        return UUID.randomUUID().toString().replace("-", "");
    }

}

输出量

3d453240-cfe5-4295-9901-8dc6a8b8135b
510efd74-9d3b-4776-b75e-e9b98193f3ce
9fcf9ff9-2067-41a7-9f0f-2b8332efe68c
0f2ac57b-9bb4-4fa0-84e2-d0aaf5ca673a
882fe502-c94e-4e19-9dd7-6a1430e9b08a
73e5295a-72df-4acf-a4b8-52d1f23f8059
ef85c1c8-89a4-4bd0-b6cd-07ea7c4218c8
c3f8783a-6390-41f7-8744-134b0c9c025c
d6ac1494-a7d1-48fe-8b26-4c0cbe6ad93f
756543e4-c66c-4e6d-8ea0-bbaf97e7197d

96fdf100f35049d598b154d314628caf
55b5ccd00a524baca2d64b36f36ffb50
680bf34291af46929ff0cbf6f6f2e928
4a4fdab30d8f453bb2a9c36b878ad985
82734287f9c444c288653dc90834d34e
e976f4b5ebf243a780aa126dc7aa3901
7e0ef8d1cebd41bb9f20d677d0710b21
056bce8e8218481380683d195c4919b4
31cdc9f08c814e6fbe6f52d2a3b1eb36
9f8f4628012f4ec7a15997e40d52bc89

参考文献

翻译自: https://mkyong.com/java/java-how-to-generate-a-random-string/

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值