本文概述
- A.生成带有特定字符的随机字母数字字符串[a-ZA-Z0-9]
- B.生成随机字符串Apache Commons Lang
- C.生成通用唯一标识符(UUID)
在本文中, 我们将向你展示3种使用Java轻松生成随机字符串的方法。
A.生成带有特定字符的随机字母数字字符串[a-ZA-Z0-9]为了使用自定义实现生成随机字符串, 你可以在自己的项目中使用以下方法作为助手:
import java.security.SecureRandom;
/** * This method returns a random string generated with SecureRandom * * @param length * @return */public static String generateRandomString(int length) {// You can customize the characters that you want to add into// the random stringsString CHAR_LOWER = "abcdefghijklmnopqrstuvwxyz";
String CHAR_UPPER = CHAR_LOWER.toUpperCase();
String NUMBER = "0123456789";
String DATA_FOR_RANDOM_STRING = CHAR_LOWER + CHAR_UPPER + NUMBER;
SecureRandom random = new SecureRandom();
if (length <
1) throw new IllegalArgumentException();
StringBuilder sb = new StringBuilder(length);
for (int i = 0;
i <
length;
i++) {// 0-62 (exclusive), random returns 0-61int rndCharAt = random.nextInt(DATA_FOR_RANDOM_STRING.length());
char rndChar = DATA_FOR_RANDOM_STRING.charAt(rndCharAt);
sb.append(rndChar);
}return sb.toString();
}
此类使用Java.security的SecureRandom类实现随机字符串生成器。此类提供了加密功能强的随机数生成器(RNG)。加密强度高的随机数至少要符合FIPS 140-2″ 加密模块的安全性要求” 第4.9.1节中指定的统计随机数生成器测试。此外, SecureRandom必须产生不确定的输出。因此, 传递给SecureRandom对象的任何种子材料都必须不可预测, 并且所有SecureRandom输出序列必须具有加密强度。
你只需要基本调用generateRandomString方法, 即可将要生成的字符串的长度作为第一个参数, 例如:
// Your own packagepackage com.ourcodeworld.mavensandbox;
// Import required classimport java.security.SecureRandom;
/** * Basic example of random strings with SecureRandom * */public class Index {public static void main(String[] args){for (int i = 0;
i <
5;
i++) {System.out.println("Random string: " + generateRandomString(10));
System.out.println("\n");
}}/*** This method returns a random string generated with SecureRandom* * @param length* @return */public static String generateRandomString(int length) {String CHAR_LOWER = "abcdefghijklmnopqrstuvwxyz";
String CHAR_UPPER = CHAR_LOWER.toUpperCase();
String NUMBER = "0123456789";
String DATA_FOR_RANDOM_STRING = CHAR_LOWER + CHAR_UPPER + NUMBER;
SecureRandom random = new SecureRandom();
if (length <
1) throw new IllegalArgumentException();
StringBuilder sb = new StringBuilder(length);
for (int i = 0;
i <
length;
i++) {// 0-62 (exclusive), random returns 0-61int rndCharAt = random.nextInt(DATA_FOR_RANDOM_STRING.length());
char rndChar = DATA_FOR_RANDOM_STRING.charAt(rndCharAt);
sb.append(rndChar);
}return sb.toString();
}}
上一类在循环内生成5个随机字符串, 这些字符串将在控制台中打印, 它将输出以下内容:
Random string: iU5OHBDJ34Random string: PDfkpDQMYzRandom string: 7OXEtv4PTTRandom string: CvYpocv3bERandom string: yyBeOe5cee
B.生成随机字符串Apache Commons Lang如果你不想自己实现此功能, 则可以依赖第三方程序包, 特别是Apache。标准Java库无法提供用于操纵其核心类的足够方法。 Apache Commons Lang提供了这些额外的方法。
Commons Lang包为java.lang API提供了许多帮助程序实用程序, 特别是字符串操作方法, 基本数值方法, 对象反射, 并发, 创建和序列化以及系统属性。此外, 它还包含对java.util.Date的基本增强, 以及一系列专用于构建方法的实用程序, 例如hashCode, toString和equals。
如果使用maven处理项目的依赖项, 请修改pom.xml文件, 并将软件包添加为依赖项:
<
!-- https://mvnrepository.com/artifact/org.apache.commons/commons-lang3 -->
<
dependency>
<
groupId>
org.apache.commons<
/groupId>
<
artifactId>
commons-lang3<
/artifactId>
<
version>
3.9<
/version>
<
/dependency>
或者, 你可以下载包的.jar文件, 然后将其手动添加到你的项目中。有关此软件包的更多信息, 请访问Maven存储库中的官方页面。将包包含在项目中之后, 你将能够从包中导入RandomStringUtils类。在此类中, 你可以调用静态方法以生成随机字符串:
- RandomStringUtils.randomNumeric:创建一个随机字符串, 其长度为指定的字符数。
- RandomStringUtils.randomAlphabetic:创建一个随机字符串, 其长度在包含最小值和专有最大值之间。将从拉丁字母字符集(a-z, A-Z)中选择字符。
- RandomStringUtils.randomAlphanumeric:创建一个随机字符串, 其长度为指定的字符数。将从拉丁字母字符(a-z, A-Z)和数字0-9中选择字符。
package com.ourcodeworld.mavensandbox;
// Import required classimport org.apache.commons.lang3.RandomStringUtils;
/** * Basic example of random strings with RandomStringUtils * */public class Index {public static void main(String[] args){System.out.println("\nNumeric string: [0-9]");
System.out.println(RandomStringUtils.randomNumeric(10));
System.out.println("\nAlphabetic String: [a-zA-Z]");
System.out.println(RandomStringUtils.randomAlphabetic(10));
System.out.println("\nAlphanumeric String: [a-zA-Z0-9]");
System.out.println(RandomStringUtils.randomAlphanumeric(10));
}}
此代码将生成如下输出:
Numeric string: [0-9]9688507775Alphabetic String: [a-zA-Z]BdNbwFqntHAlphanumeric String: [a-zA-Z0-9]IZdNATmcQs
C.生成通用唯一标识符(UUID)如果你想用Java生成UUID, Java的util包已经提供了生成此类ID的功能。 Java.util的UUID类表示一个不变的通用唯一标识符(UUID)。 UUID表示一个128位的值。这些全局标识符存在不同的变体。此类的方法用于操纵Leach-Salz变体, 尽管构造函数允许创建UUID的任何变体(如下所述)。
我们将向你展示如何生成具有2个变体的UUID, 第一个生成带破折号的ID(默认实现), 第二个不带破折号的ID:
package com.ourcodeworld.mavensandbox;
// Import required classimport java.util.UUID;
/** * Basic example of random strings with randomUUID * */public class Index {public static void main(String[] args){for (int i = 0;
i <
5;
i++) {System.out.println(generateRandomUUID());
}for (int i = 0;
i <
5;
i++) {System.out.println(generateRandomUUIDWithoutDash());
}}public static String generateRandomUUID() {return UUID.randomUUID().toString();
}public static String generateRandomUUIDWithoutDash() {return UUID.randomUUID().toString().replace("-", "");
}}
这将生成以下输出:
eccfd644-07b0-4817-ae37-da394cc1e6d387d6524d-5892-437c-b8fa-a06f5f98f3a235949777-141d-4a7f-a868-d385f0c6d86a1528594e-9687-42df-937d-241637746056dc9b998a-83f2-4e83-83ba-9b0f5ba0be7ab5cdbc574e8a4294b402234321818a4e6b450556572d47228ea03bacf335c3ec475d7823bd2d41c2a28b72aea6933526eb1dba5a4e864bc1aa4655e671cd5201ea40ef86685f4508a5429835d1aba78a
【如何在Java中生成具有自定义长度的随机字母数字字符串】编码愉快!
推荐阅读
- 如何使用Python检查字符串是否是回文
- 如何使用WxPython创建HTML文件查看器
- 附录(基于Chrome DevTools网络面板的Web调试代理)
- 如何在Python中创建QR Code图像或SVG
- 为什么要学习Python编程语言()
- 如何使用QReader库在Android中创建QR码阅读器
- 为什么Python是编程的未来()
- 如何在Python中使用PySftp访问SFTP服务器
- python基础篇(二十)——Python中的一些易混淆点总结(完结)