Случайная генерация строк java

Содержание
  1. Generate Random Strings in Java Examples
  2. 1. Generate Random Strings using Java Core
  3. The basic logic about generating random string
  4. Generate alphanumeric random string using Java Core
  5. Generate random strings include special characters
  6. 2. Generate Random Strings using UUID Class
  7. 3. Generate Random Strings using Apache Commons Lang
  8. 4. Use Secure and Thread-safe Random Generator
  9. References:
  10. Other Java Coding Tutorials:
  11. About the Author:
  12. Java – Генерация Случайной Строки
  13. 1. Сгенерируйте Случайную Неограниченную Строку С Помощью Простой Java
  14. Дальнейшее чтение:
  15. Эффективный калькулятор частоты слов на Java
  16. Java – Случайные длинные, Плавающие, целочисленные и двойные
  17. Руководство по пулу строк Java
  18. 2. Сгенерируйте Случайную Ограниченную Строку С Помощью Простой Java
  19. 3. Сгенерируйте Случайную Алфавитную Строку С Помощью Java 8
  20. 4. Сгенерируйте Случайную Буквенно-Цифровую Строку С Помощью Java 8
  21. 5. Сгенерируйте Ограниченную Случайную Строку С Помощью Apache Commons Lang
  22. 6. Создайте Алфавитную Строку С Помощью Apache Commons Lang
  23. 7. Сгенерируйте Буквенно-Цифровую Строку С Помощью Apache Commons Lang
  24. 8. Заключение
  25. Читайте ещё по теме:
  26. Create random String in Java example
  27. How to create a random string of the specified length in Java?
  28. 1) Using the Random and String classes
  29. 2) Using the SecureRandom and BigInteger classes

Generate Random Strings in Java Examples

Generating random strings is a very common need of software applications. For examples, random strings are used for identifiers, tokens, keys, one-time passwords, verification code, etc. So in this article, I’d love to share with you some ways and code examples which you can use to generate random strings in Java, that include alphabetic, alphanumeric, numeric-only, and special characters.

1. Generate Random Strings using Java Core

For simple purposes (no strict security requirement), you can write some code with plain Java code. No external dependencies needed.

The basic logic about generating random string

The following code snippet gives you a basic idea about the logic of generating random strings in Java:

public static String randomStringSimple(int length)

This method generates a random string whose size is specified by the parameter length. You can see, we use the Random class’ nextBytes() method that returns a byte array filled with random values. Then we create a String object from the byte array, which results in a random string.

Since a byte can have any value from -128 to 127, the generated string can contain non-visible characters. That means this code example cannot be used in practice, rather it gives you the basic idea of how to write code for generating random strings in Java.

Also note that the java.util.Random class generates pseudorandom numbers, or fake random.

Generate alphanumeric random string using Java Core

The following code example shows how to generate a random string which contains both alphabetic and numeric characters:

public static String randomAlphanumericString(int length) < String alphanumericCharacters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuv"; StringBuffer randomString = new StringBuffer(length); Random random = new Random(); for (int i = 0; i < length; i++) < int randomIndex = random.nextInt(alphanumericCharacters.length()); char randomChar = alphanumericCharacters.charAt(randomIndex); randomString.append(randomChar); >return randomString.toString(); >

The logic in this code is quite simple. First we define a String object alphanumericCharacters that contains all letters and numbers. Then we generate a random String with each character is randomly chosen from the predefined set. You can see we use the Random class’ nextInt() method that returns a random integer number that is not greater than the specified bound.

And below is some testing code that generates 3 random strings with different length:

String randomString1 = randomAlphanumericString(10); System.out.println("Random String #1: " + randomString1); String randomString2 = randomAlphanumericString(15); System.out.println("Random String #2: " + randomString2); String randomString3 = randomAlphanumericString(20); System.out.println("Random String #3: " + randomString3);
Random String #1: X7OsqoYB8P Random String #2: pED6RK7HIVTOq0W Random String #3: fqihhIIHsarlY4UAukXk

Generate random strings include special characters

You can modify the above code example to generate random strings that contain both alphanumeric and special characters. Based on the character codes in ASCII table:

Читайте также:  How to delete arraylist in java

ascii table

You see, the codes from 33 to 126 includes special, alphabetic and numeric characters. So below is the code:

public static String randomAlphanumericString(int length) < char startChar = 33; char endChar = 126; StringBuffer randomString = new StringBuffer(length); Random random = new Random(); for (int i = 0; i < length; i++) < int randomIndex = startChar + random.nextInt(endChar - startChar + 1); randomString.append((char) randomIndex); >return randomString.toString(); >
String randomString1 = randomAlphanumericString(10); System.out.println("Random String #1: " + randomString1); String randomString2 = randomAlphanumericString(15); System.out.println("Random String #2: " + randomString2); String randomString3 = randomAlphanumericString(20); System.out.println("Random String #3: " + randomString3);
Random String #1: !`;u!k=|Vc Random String #2: %%xB\B25ryhg|zS Random String #3: K/IzJ'>e@z$Vo%`'.Il)

2. Generate Random Strings using UUID Class

You can use the java.util.UUID class to generate random strings that are kind of Universally Unique Identifier (UUID). Below is an example code:

UUID uuid1 = UUID.randomUUID(); System.out.println("UUID #1: " + uuid1); UUID uuid2 = UUID.randomUUID(); System.out.println("UUID #2: " + uuid2); UUID uuid3 = UUID.randomUUID(); System.out.println("UUID #3: " + uuid3);
UUID #1: f7f56e8b-888b-400b-819f-c987059a861b UUID #2: 430330c4-7cc4-4d26-82bc-ddb005eab5f5 UUID #3: 8a0d450d-90a4-4ae6-90ef-978b9ce4f93e

The UUID strings look like serial keys or product keys, right? So you can use UUID to ensure the uniqueness of random strings.

3. Generate Random Strings using Apache Commons Lang

If you don’t want to write code from scratch, you can use a ready-made library such as Apache Commons Lang — a popular library that provides extra methods missing in the standard Java libraries. To use Apache Commons Lang in a Java Maven project, declare the following dependency in the pom.xml file:

 org.apache.commons commons-lang3 3.12.0 

Then you can use some randomXXX() methods in the RandomStringUtils class for generate a kind of random string you wish to.

Basically, you can use the generic method random(int count, boolean letters, boolean numbers) . For example, the following code generates a 10-character random string that includes both letters and numbers:

boolean useLetters = true; boolean useNumbers = true; String randomString = RandomStringUtils.random(10, useLetters, useNumbers);

You can use the random(count) method to generate a random string that contains any characters. For example:

String randomString = RandomStringUtils.random(10);

Use the randomAscii(count) method to generate a random string that contains only ASCII characters (code from 32 to 126). For example:

String randomAscii = RandomStringUtils.randomAscii(8);

Use the randomAlphabetic(count) method to generate a random string that contains only letters. For example:

String randomAlphabetic = RandomStringUtils.randomAlphabetic(20);

Use the randomAlphanumeric(count) method to generate a random string that contains both letters and numbers. For example:

String randomAlphanumeric = RandomStringUtils.randomAlphanumeric(20);

And use the randomNumeric(count) method to generate a random string that contains only numbers. For example:

String randomNumeric = RandomStringUtils.randomNumeric(6);

So, depending on your need, use an appropriate method provided by the RandomStringUtils class. It’s very convenient if your project is already making use of the Apache Commons Lang library.

Читайте также:  Python turn string into array

4. Use Secure and Thread-safe Random Generator

In case more security is required, you should use SecureRandom class instead of Random , which provides a cryptographically strong random number generator. For example:

Random random = new SecureRandom();

And in the random string generation code is used by multiple threads, you should use the ThreadLocalRandom class. For example:

Random random = ThreadLocalRandom.current();

That’s my guide and code examples about generating random strings in Java. I hope you find this article helpful. Thanks for reading.

References:

Other Java Coding Tutorials:

About the Author:

Nam Ha Minh is certified Java programmer (SCJP and SCWCD). He started programming with Java in the time of Java 1.4 and has been falling in love with Java since then. Make friend with him on Facebook and watch his Java videos you YouTube.

Источник

Java – Генерация Случайной Строки

Генерируйте ограниченные и неограниченные случайные строки, используя простую Java и библиотеку Apache Commons Lang.

В этом уроке мы покажем, как сгенерировать случайную строку в Java – сначала с помощью стандартных библиотек Java, затем с помощью варианта Java 8 и, наконец, с помощью библиотеки Apache Commons Lang .

Эта статья является частью серии “Java – Back to Basic” здесь, на Baeldung.

1. Сгенерируйте Случайную Неограниченную Строку С Помощью Простой Java

Давайте начнем с простого и сгенерируем случайную Строку , ограниченную 7 символами:

@Test public void givenUsingPlainJava_whenGeneratingRandomStringUnbounded_thenCorrect() < byte[] array = new byte[7]; // length is bounded by 7 new Random().nextBytes(array); String generatedString = new String(array, Charset.forName("UTF-8")); System.out.println(generatedString); >

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

Дальнейшее чтение:

Эффективный калькулятор частоты слов на Java

Java – Случайные длинные, Плавающие, целочисленные и двойные

Руководство по пулу строк Java

2. Сгенерируйте Случайную Ограниченную Строку С Помощью Простой Java

Далее – давайте рассмотрим создание более ограниченной случайной строки; мы собираемся сгенерировать случайную Строку , используя строчные буквы алфавита и заданную длину:

@Test public void givenUsingPlainJava_whenGeneratingRandomStringBounded_thenCorrect() < int leftLimit = 97; // letter 'a' int rightLimit = 122; // letter 'z' int targetStringLength = 10; Random random = new Random(); StringBuilder buffer = new StringBuilder(targetStringLength); for (int i = 0; i < targetStringLength; i++) < int randomLimitedInt = leftLimit + (int) (random.nextFloat() * (rightLimit - leftLimit + 1)); buffer.append((char) randomLimitedInt); >String generatedString = buffer.toString(); System.out.println(generatedString); >

3. Сгенерируйте Случайную Алфавитную Строку С Помощью Java 8

Теперь давайте использовать Random.ints – добавлено в JDK 8 – для создания алфавитной строки:

@Test public void givenUsingJava8_whenGeneratingRandomAlphabeticString_thenCorrect() < int leftLimit = 97; // letter 'a' int rightLimit = 122; // letter 'z' int targetStringLength = 10; Random random = new Random(); String generatedString = random.ints(leftLimit, rightLimit + 1) .limit(targetStringLength) .collect(StringBuilder::new, StringBuilder::appendCodePoint, StringBuilder::append) .toString(); System.out.println(generatedString); >

4. Сгенерируйте Случайную Буквенно-Цифровую Строку С Помощью Java 8

А затем мы можем расширить наш набор символов, чтобы получить буквенно-цифровую строку :

@Test public void givenUsingJava8_whenGeneratingRandomAlphanumericString_thenCorrect() < int leftLimit = 48; // numeral '0' int rightLimit = 122; // letter 'z' int targetStringLength = 10; Random random = new Random(); String generatedString = random.ints(leftLimit, rightLimit + 1) .filter(i ->(i = 65) && (i = 97)) .limit(targetStringLength) .collect(StringBuilder::new, StringBuilder::appendCodePoint, StringBuilder::append) .toString(); System.out.println(generatedString); >

Обратите внимание на использование метода filter выше, чтобы исключить символы Юникода между 65 и 90 – чтобы избежать символов вне диапазона.

Читайте также:  Building web application with python

5. Сгенерируйте Ограниченную Случайную Строку С Помощью Apache Commons Lang

Библиотека Commons Lang от Apache очень помогает при генерации случайных строк. Давайте посмотрим на создание ограниченной строки с использованием только букв :

@Test public void givenUsingApache_whenGeneratingRandomStringBounded_thenCorrect()

Поэтому – вместо всего низкоуровневого кода в примере Java-это делается с помощью простой однострочной строки.

6. Создайте Алфавитную Строку С Помощью Apache Commons Lang

Еще один очень простой пример – на этот раз ограниченная Строка только с буквенными символами, но без передачи логических флагов в API:

@Test public void givenUsingApache_whenGeneratingRandomAlphabeticString_thenCorrect()

7. Сгенерируйте Буквенно-Цифровую Строку С Помощью Apache Commons Lang

И, наконец, – та же случайная ограниченная Строка , но на этот раз – числовая:

@Test public void givenUsingApache_whenGeneratingRandomAlphanumericString_thenCorrect()

И вот у нас есть это – создание ограниченных и неограниченных строк с помощью простой Java, варианта Java 8 или библиотеки Apache Commons.

8. Заключение

С помощью различных методов реализации мы смогли генерировать связанные и несвязанные строки, используя обычную Java, вариант Java 8 или библиотеку Apache Commons.

В этих примерах Java мы использовали java.util.Random , но один момент, о котором стоит упомянуть, заключается в том, что он не является криптографически безопасным. Рассмотрите возможность использования java.security.SecureRandom вместо этого для приложений, чувствительных к безопасности.

Реализацию всех этих примеров и фрагментов можно найти в проекте GitHub . Это проект на основе Maven, поэтому его должно быть легко импортировать и запускать.

Читайте ещё по теме:

Источник

Create random String in Java example

Create random String in Java example shows how to create random string of a specified length in Java. The example also shows how to create random alphanumeric string, random numeric string or random alphabetic string in Java.

How to create a random string of the specified length in Java?

There are several ways in which you can create a random string in Java as given below.

1) Using the Random and String classes

We can create a random string of specified length using the java.util.Random class as given below.

We kept all the allowed characters in a String for later reference and took one random character from it and appended it to the StringBuilder object. When we had required string length, we converted StringBuilder to String and returned it.

You can change the String containing allowed characters according to your needs. You can also change the string required length to generate a random string of specified characters.

Note: Please note that the above solution uses java.util.Random class. If you want a secure solution change the Radom with SecureRandom class.

If you are using Java 1.4 or earlier version, use the StringBuffer class instead of the StringBuilder class.

2) Using the SecureRandom and BigInteger classes

The BigInteger class can be used to generate random strings by using below given constructor.

This constructor creates randomly generated non-negative BigInteger in the range of 0 to 2^bits – 1. Here is the example program to generate random string using BigInteger and SecureRandom classes.

Источник

Оцените статью