Dado un tamaño como n, la tarea es generar una string alfanumérica aleatoria de este tamaño.
A continuación se muestran varias formas de generar strings alfanuméricas aleatorias de un tamaño dado:
Requisito previo: generar números aleatorios en Java
- Método 1: Usar Math.random()
Aquí la función getAlphaNumericString(n) genera un número aleatorio de la longitud de una string. Este número es un índice de un carácter y este carácter se agrega en la variable local temporal sb. Al final se devuelve sb.
// Java program generate a random AlphaNumeric String
// using Math.random() method
public
class
RandomString {
// function to generate a random string of length n
static
String getAlphaNumericString(
int
n)
{
// chose a Character random from this String
String AlphaNumericString =
"ABCDEFGHIJKLMNOPQRSTUVWXYZ"
+
"0123456789"
+
"abcdefghijklmnopqrstuvxyz"
;
// create StringBuffer size of AlphaNumericString
StringBuilder sb =
new
StringBuilder(n);
for
(
int
i =
0
; i < n; i++) {
// generate a random number between
// 0 to AlphaNumericString variable length
int
index
= (
int
)(AlphaNumericString.length()
* Math.random());
// add Character one by one in end of sb
sb.append(AlphaNumericString
.charAt(index));
}
return
sb.toString();
}
public
static
void
main(String[] args)
{
// Get the size n
int
n =
20
;
// Get and display the alphanumeric string
System.out.println(RandomString
.getAlphaNumericString(n));
}
}
Producción:kU9vRVm9T1lFMbi3duO1
Método 2: Usar CharSet
Genere una string alfanumérica de 20 caracteres de largo al azar usando Charset que se encuentra en el paquete java.nio.charset .
- Primero tome char entre 0 a 256 y atraviese.
- Compruebe que el carácter es alfabético o numérico.
- En caso afirmativo, agregue al final de nuestra String
- String de retorno
A continuación se muestra la implementación del enfoque anterior:
// Java program generate a random AlphaNumeric String
// using CharSet method
import
java.util.*;
import
java.nio.charset.*;
class
RandomString {
static
String getAlphaNumericString(
int
n)
{
// length is bounded by 256 Character
byte
[] array =
new
byte
[
256
];
new
Random().nextBytes(array);
String randomString
=
new
String(array, Charset.forName(
"UTF-8"
));
// Create a StringBuffer to store the result
StringBuffer r =
new
StringBuffer();
// Append first 20 alphanumeric characters
// from the generated random String into the result
for
(
int
k =
0
; k < randomString.length(); k++) {
char
ch = randomString.charAt(k);
if
(((ch >=
'a'
&& ch <=
'z'
)
|| (ch >=
'A'
&& ch <=
'Z'
)
|| (ch >=
'0'
&& ch <=
'9'
))
&& (n >
0
)) {
r.append(ch);
n--;
}
}
// return the resultant string
return
r.toString();
}
public
static
void
main(String[] args)
{
// size of random alphanumeric string
int
n =
20
;
// Get and display the alphanumeric string
System.out.println(getAlphaNumericString(n));
}
}
Producción:jj06CyZKfSBZQHM6KAUd
- Método 3: usar expresiones regulares
- Primero tome char entre 0 y 256.
- elimine todos los caracteres excepto 0-9, az y AZ.
- Selección aleatoria de un personaje
- Agregue al final nuestra variable requerida
A continuación se muestra la implementación del enfoque anterior:
// Java program generate a random AlphaNumeric String
// using Regular Expressions method
import
java.util.*;
import
java.nio.charset.*;
class
RandomString {
static
String getAlphaNumericString(
int
n)
{
// length is bounded by 256 Character
byte
[] array =
new
byte
[
256
];
new
Random().nextBytes(array);
String randomString
=
new
String(array, Charset.forName(
"UTF-8"
));
// Create a StringBuffer to store the result
StringBuffer r =
new
StringBuffer();
// remove all spacial char
String AlphaNumericString
= randomString
.replaceAll(
"[^A-Za-z0-9]"
,
""
);
// Append first 20 alphanumeric characters
// from the generated random String into the result
for
(
int
k =
0
; k < AlphaNumericString.length(); k++) {
if
(Character.isLetter(AlphaNumericString.charAt(k))
&& (n >
0
)
|| Character.isDigit(AlphaNumericString.charAt(k))
&& (n >
0
)) {
r.append(AlphaNumericString.charAt(k));
n--;
}
}
// return the resultant string
return
r.toString();
}
public
static
void
main(String[] args)
{
// size of random alphanumeric string
int
n =
20
;
// Get and display the alphanumeric string
System.out.println(getAlphaNumericString(n));
}
}
Producción:4J8pirLzX6oIF0IIIaUU
- Método 4: Generar strings aleatorias de letras mayúsculas/minúsculas/números
Cuando se necesiten algunos caracteres específicos en la string alfanumérica, como solo UpperCaseLetter o LowerCaseLetter o Numbers, use este método. El siguiente ejemplo genera una string aleatoria de letras minúsculas de tamaño n.
A continuación se muestra la implementación del enfoque anterior:
// Java program generate a random
// UpperCase or LowerCase or Number String
import
java.util.*;
public
class
GFG {
static
String getAlphaNumericString(
int
n)
{
// lower limit for LowerCase Letters
int
lowerLimit =
97
;
// lower limit for LowerCase Letters
int
upperLimit =
122
;
Random random =
new
Random();
// Create a StringBuffer to store the result
StringBuffer r =
new
StringBuffer(n);
for
(
int
i =
0
; i < n; i++) {
// take a random value between 97 and 122
int
nextRandomChar = lowerLimit
+ (
int
)(random.nextFloat()
* (upperLimit - lowerLimit +
1
));
// append a character at the end of bs
r.append((
char
)nextRandomChar);
}
// return the resultant string
return
r.toString();
}
public
static
void
main(String[] args)
{
// size of random alphanumeric string
int
n =
20
;
// Get and display the alphanumeric string
System.out.println(getAlphaNumericString(n));
}
}
Producción:qbhalyuzrenuwgvqidno