string - generador - generar letras aleatorias en java
Groovy: genera cadena aleatoria a partir de un juego de caracteres determinado (6)
Usando Groovy, me gustaría generar una secuencia aleatoria de caracteres a partir de una expresión regular determinada.
- Los caracteres permitidos son:
[A-Z0-9]
- Longitud de la secuencia generada: 9
Ejemplo: A586FT3HS
Sin embargo, no puedo encontrar ningún fragmento de código que me pueda ayudar. Si usar expresiones regulares es demasiado complicado, estaré muy bien definiendo el conjunto de caracteres permitidos manualmente.
Aquí hay un comando / instrucción de una sola línea para generar cadenas de texto aleatorias
print new Random().with {(1..9).collect {((''a''..''z'')).join()[ nextInt(((''a''..''z'')).join().length())]}.join()}
o
def randText = print new Random().with {(1..9).collect {((''a''..''z'')).join()[ nextInt(((''a''..''z'')).join().length())]}.join()}
Crea una cadena con tu alfabeto, luego hazlo 9 veces:
- Crea un número random
- Encuentra el personaje correspondiente en tu alfabeto.
- Append al resultado
Este código es puro maravilloso que encontré en la web:
String alphabet = ((''A''..''N'')+(''P''..''Z'')+(''a''..''k'')+(''m''..''z'')+(''2''..''9'')).join()
def n = 6
def giveMeKey(){
def key
for(def i=0;i<50;i++){
key = new Random().with {
(1..n).collect { alphabet[ nextInt( alphabet.length() ) ] }.join()
}
}
return key
}
Return String es bueno para uso local:
BFx9PU
MkbRaE
Para los usuarios de SoupUI:
def generator = { String alphabet, int n ->
new Random().with {
(1..n).collect { alphabet[ nextInt( alphabet.length() ) ] }.join()
}
}
randomValue = generator( ((''A''..''Z'')+(''0''..''9'')+(''a''..''z'')).join(), 15 )
testRunner.getTestCase().setPropertyValue("randomNumber", randomValue);
Si no desea utilizar apache commons, o no está utilizando Grails, una alternativa es:
def generator = { String alphabet, int n ->
new Random().with {
(1..n).collect { alphabet[ nextInt( alphabet.length() ) ] }.join()
}
}
generator( ((''A''..''Z'')+(''0''..''9'')).join(), 9 )
pero, de nuevo, necesitarás hacer tu propio alphabet
... No sé de nada que pueda analizar una expresión regular y extraer un alfabeto de caracteres que pasan ...
import org.apache.commons.lang.RandomStringUtils
String charset = ((''A''..''Z'') + (''0''..''9'')).join()
Integer length = 9
String randomString = RandomStringUtils.random(length, charset.toCharArray())
La clase importada RandomStringUtils
ya está en la ruta de clases de Grails, por lo que no debería necesitar agregar nada a la ruta de clases si está escribiendo una aplicación de Grails.
Actualizar
Si solo desea incluir caracteres alfanuméricos en la Cadena, puede reemplazar lo anterior con
String randomString = org.apache.commons.lang.RandomStringUtils.random(9, true, true)