本文将讨论四种在 Java 中生成随机字母数字字符串的方法。
正则表达式
Math.random()
方法
Charset
Apache Commons Lang
在 Java 中使用正则表达式生成随机字符串
此方法很简单,给出了一个包含小写字符和数字的大写字母数字字符串。
第一步是取 0 到 256 之间的字符。
第二步是过滤这些字符,留下我们想要包含在随机字符串中的元素。请记住,我们想要留下的字符是 0-9 和 A-Z,所以我们可以创建一个过滤器来删除所有其他的字符。
下一步是选择随机字符并将它们添加到
StringBuffer
中。然后我们使用
toString()
方法从 StringBuffer 中创建一个字符串。
下面是一个示例代码。
import
java.nio.charset.*
;
import
java.util.*
;
class
GenerateAlphaNumericString
{
static
String
getRandomString
(
int
i
)
// bind the length
bytearray
=
new
byte
[
256
];
byte
[]
bytearray
;
String mystring
;
StringBuffer thebuffer
;
String theAlphaNumericS
;
new
Random
().
nextBytes
(
bytearray
);
mystring
=
new
String
(
bytearray
,
Charset
.
forName
(
"UTF-8"
));
thebuffer
=
new
StringBuffer
();
//remove all spacial char
theAlphaNumericS
=
mystring
.
replaceAll
(
"[^A-Z0-9]"
,
""
);
//random selection
for
(
int
m
=
0
;
m
<
theAlphaNumericS
.
length
();
m
++)
{
if
(
Character
.
isLetter
(
theAlphaNumericS
.
charAt
(
m
))
&&
(
i
>
0
)
||
Character
.
isDigit
(
theAlphaNumericS
.
charAt
(
m
))
&&
(
i
>
0
))
{
thebuffer
.
append
(
theAlphaNumericS
.
charAt
(
m
));
i
--;
// the resulting string
return
thebuffer
.
toString
();
public
static
void
main
(
String
[]
args
)
// the random string length
int
i
=
15
;
// output
System
.
out
.
println
(
"A random string: "
+
getRandomString
(
i
));
A random string
:
4H4V7FWP8ZUKEGW
在 Java 中使用
Math.random()
方法生成随机字母数字字符串
它涉及手动创建一个包含所有可能字符的字符串。然后,通过从先前创建的字符串中选择字符和数字,来创建一个定义长度的随机字符串。
首先,我们定义了我们需要的两个变量-
StringBuilder
和
String
。
String
将包含所有大写字母和数字 0-9。该字符串不应有符号或空格,因为该字符串中字符的索引将用于随机选择字符。
其次,定义限于我们要创建的随机字符串的长度的迭代。
第三,使用
Math.random()
方法生成一个随机索引。从先前创建的字符串中获取字符,该字符是随机生成的索引位置,并将其附加到
StringBuilder
。然后,我们可以使用
toString()
方法从 StringBuilder 中获取随机字符串。
下面是一个示例代码。
class
AlphaNumericStringGenerator
{
static
String
getRandomString
(
int
i
)
String theAlphaNumericS
;
StringBuilder builder
;
theAlphaNumericS
=
"ABCDEFGHIJKLMNOPQRSTUVWXYZ"
+
"0123456789"
;
//create the StringBuffer
builder
=
new
StringBuilder
(
i
);
for
(
int
m
=
0
;
m
<
i
;
m
++)
{
// generate numeric
int
myindex
=
(
int
)(
theAlphaNumericS
.
length
()
*
Math
.
random
());
// add the characters
builder
.
append
(
theAlphaNumericS
.
charAt
(
myindex
));
return
builder
.
toString
();
public
static
void
main
(
String
[]
args
)
// the random string length
int
i
=
15
;
// output
System
.
out
.
println
(
"A random string: "
+
getRandomString
(
i
));
A random string: BCQJPZLG3OC1MQD
使用 Charset 生成
我们使用 Charset,它位于
java.nio.charset
包中。字符集代表字符集,并表示字符和数字之间的映射。下面说明使用 Charset 创建字母数字字符串的过程。
第一步是获取 0 到 256 之间的字符。然后将
Random()
方法应用于上面的字符数组。第三步是通过迭代检查每个字符是字母还是数字。如果是它们中的任何一个,我们都将该字符添加到字符串的末尾,直到达到定义的长度。使用
toString()
方法将附加在
StringBuilder
上的字符转换为所需的字符串。
下面是一个示例代码。
import
java.nio.charset.*
;
import
java.util.*
;
class
AlphaNumericStringGenerator
{
static
String
getRandomString
(
int
i
)
byte
[]
bytearray
;
String mystring
;
StringBuffer thebuffer
;
bytearray
=
new
byte
[
256
];
new
Random
().
nextBytes
(
bytearray
);
mystring
=
new
String
(
bytearray
,
Charset
.
forName
(
"UTF-8"
));
// Create the StringBuffer
thebuffer
=
new
StringBuffer
();
for
(
int
m
=
0
;
m
<
mystring
.
length
();
m
++)
{
char
n
=
mystring
.
charAt
(
m
);
if
(((
n
>=
'A'
&&
n
<=
'Z'
)
||
(
n
>=
'0'
&&
n
<=
'9'
))
&&
(
i
>
0
))
{
thebuffer
.
append
(
n
);
i
--;
// resulting string
return
thebuffer
.
toString
();
public
static
void
main
(
String
[]
args
)
// the random string length
int
i
=
15
;
// output
System
.
out
.
println
(
"A random string: "
+
getRandomString
(
i
));
A random string: XKT0JAHPRPZ6A3X
使用 Apache Commons Lang
这是最容易实现的方法,因为由第三方来处理实现,在这种情况下是
Apache
程序包。
Apache Commons Lang
软件包提供了许多与 Java 中的字符串操作有关的帮助程序实用程序。由于它是第三方,因此必须首先将其添加为项目中的依赖项。
我们可以使用
RandomStringUtils 类
来生成随机字符串。此类有三种可以提供随机字符串的方法:
RandomStringUtils.randomNumeric
:创建一个指定长度的随机字符串。
RandomStringUtils.randomAlphabetic
:创建一个随机的字母字符串,包含大小写字符
RandomStringUtils.randomAlphanumeric
:创建具有指定长度的随机字母数字字符串。
下面是一个代码示例。
import
org.apache.commons.lang3.RandomStringUtils
;
public
class
Index
{
public
static
void
main
(
String
[]
args
){
System
.
out
.
println
(
RandomStringUtils
.
randomAlphanumeric
(
15
)
toUpperCase
(););
RM0WMYOKN7AS0KA
RandomStringUtils.randomAlphanumeric
直接实现随机字母数字,并且可以选择使用小写字母或大写字母或同时使用两者。当你不想在代码中实现字符串生成时,这是一种有效的方法。Apache 库功能强大,并具有其他许多功能,例如基本的数值方法,并发性和对象反射。
Java Struts2 框架 java.lang.NoSuchFieldError: EMPTY_BYTE_ARRAY 错误解决
Gson -- Java-JSON 序列化和反序列化入门
如何在 Java 中检查或检测数组中的重复元素
Java Struts 框架 java.lang.ClassNotFoundException: XXX.dispatcher.FilterDispatcher 错误
关于 Java 中的松散耦合你需要知道的一切
处理 Java 异常时应避免的 7 个常见错误
Java 中的 HashMap 和 Hashtable 有什么区别?
Java中为什么wait,notify 和 notifyAll 在同步块或方法中调用
Java中 HashMap 的工作原理