Generar string aleatoria de tamaño dado en Java

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 .

    1. Primero tome char entre 0 a 256 y atraviese.
    2. Compruebe que el carácter es alfabético o numérico.
    3. En caso afirmativo, agregue al final de nuestra String
    4. 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
    1. Primero tome char entre 0 y 256.
    2. elimine todos los caracteres excepto 0-9, az y AZ.
    3. Selección aleatoria de un personaje
    4. 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
    

Publicación traducida automáticamente

Artículo escrito por Rajput-Ji y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *