matriculas letras generar generador como combinaciones codigos codigo caracteres cadenas cadena azar alfanumericos aleatorios aleatorias string groovy random

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()}



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)