null

Генерация случайной буквенно-цифровой строки

Генерация случайной буквенно-цифровой строки часто становится необходимостью. Это может быть нужно для создания временных паролей, уникальных идентификаторов и других задач.

Простая реализация:

Алгоритм:

Для формирования случайной строки, следует объединять символы, которые выбираются случайным образом из предопределенного набора допустимых символов до тех пор, пока сформированная таким образом строка не достигнет заданной желаемой длины. Этот метод позволяет создать уникальную комбинацию символов с контролируемой длиной.

Реализация:

Вот довольно простой код для генерации случайных строк

import java.util.Random;

public class RandomString {
    
    // Все буквы английского алфавита в верхнем регистре
    public static final String enUpper = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";

    // Все буквы английского алфавита в нижнем регистре
    public static final String enLower = enUpper.toLowerCase();
    
    // Все буквы русского алфавита в верхнем регистре
    public static final String ruUpper = "АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ";

    // Все буквы английского алфавита в нижнем регистре    
    public static final String ruLower = ruUpper.toLowerCase();

    // Все цифры 
    public static final String digits = "0123456789";

    // Все возможные буквенно-цифровые символы
    public static final String symbols = enUpper + enLower + ruUpper + ruLower + digits;

    // Функция генерации случайной буквенно-цифровой строки
    public static String nextString(Integer length) {
        Random random = new Random();
        char[] buf = new char[length];
        for (int idx = 0; idx < buf.length; ++idx)
            buf[idx] = symbols.charAt(random.nextInt(symbols.length()));
        return new String(buf);
    }
}

UUID:
 

Во многих случаях хватает использования UUID - стандарта идентификации, используемого в создании программного обеспечения. Это 128-битное число, которое в разработке ПО используется в качестве уникального идентификатора элементов. 

И существует в таком виде:

6345ac44-b222-5f5a-5cca-4348de6f7602


Использование UUID значительно упрощает задачу, а возможности Java достаточны для генерации строки. В итоге для генерации случайного идентификатора достаточно использовать одну строчку.:

UUID.randomUUID().toString();

Однако, она не подойдет для всех случаев, так как UUID не подлежит настройке. Если вам требуется что-то более гибкое, этот вариант не будет работать.

Другие возможности:

Для упрощения работы с генерацией случайных строк можно использовать возможности Apace. 
 

RandomStringUtils.randomAlphanumeric(20).toUpperCase();

RandomStringUtils предназначен для простых случаев использования - например, просто создать строку из случайной буквенно-цифровой последовательности, заданной длины.

RandomStringGenerator.Builder()
                .withinRange('0', 'z')
                .filteredBy(CharacterPredicates.LETTERS, CharacterPredicates.DIGITS)
                .build();
randomStringGenerator.generate(12);

Для более сложных случаев использования вместо можно рассмотреть возможность использования RandomStringGenerator, так как он предлагает больше опций настройки.