Java - Zufällige Zeichenfolge generieren

In diesem Tutorial zeigen wir, wie eine zufällige Zeichenfolge in Java generiert wird - zuerst mit den Standard-Java-Bibliotheken, dann mit einer Java 8-Variante und schließlich mit der Apache Commons Lang-Bibliothek.

Dieser Artikel ist Teil der Reihe „Java - Back to Basic“ hier auf Baeldung.

1. Generieren Sie zufällige ungebundene Zeichenfolgen mit einfachem Java

Beginnen wir einfach und erzeugen eine zufällige Zeichenfolge begrenzt auf 7 Zeichen:

@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); }

Beachten Sie, dass die neue Zeichenfolge keine entfernt alphanumerische Zeichenfolge ist.

2. Generieren Sie eine zufällige begrenzte Zeichenfolge mit einfachem Java

Weiter - Schauen wir uns an, wie Sie eine engere Zufallszeichenfolge erstellen. Wir werden einen zufälligen String mit alphabetischen Kleinbuchstaben und einer festgelegten Länge generieren :

@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. Generieren Sie mit Java 8 eine zufällige alphabetische Zeichenfolge

Verwenden wir nun Random.ints - hinzugefügt in JDK 8 -, um eine alphabetische Zeichenfolge zu generieren :

@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. Generieren Sie mit Java 8 eine zufällige alphanumerische Zeichenfolge

Und dann können wir unseren Zeichensatz erweitern, um eine alphanumerische Zeichenfolge zu erhalten :

@Test public void givenUsingJava8_whenGeneratingRandomAlphanumericString_thenCorrect() 

Beachten Sie die oben beschriebene Filtermethode , um Unicode-Zeichen zwischen 65 und 90 wegzulassen - um Zeichen außerhalb des Bereichs zu vermeiden.

5. Generieren Sie eine begrenzte zufällige Zeichenfolge mit Apache Commons Lang

Die Commons Lang-Bibliothek von Apache hilft sehr bei der Erzeugung zufälliger Zeichenfolgen. Lassen Sie uns einen Blick darauf werfen, wie ein begrenzter String nur aus Buchstaben generiert wird :

@Test public void givenUsingApache_whenGeneratingRandomStringBounded_thenCorrect() { int length = 10; boolean useLetters = true; boolean useNumbers = false; String generatedString = RandomStringUtils.random(length, useLetters, useNumbers); System.out.println(generatedString); }

Anstelle des gesamten Low-Level-Codes im Java-Beispiel wird dieser also mit einem einfachen Einzeiler ausgeführt.

6. Generieren Sie mit Apache Commons Lang eine alphabetische Zeichenfolge

Ein weiteres sehr einfaches Beispiel - diesmal ein begrenzter String mit nur alphabetischen Zeichen, ohne jedoch boolesche Flags an die API zu übergeben:

@Test public void givenUsingApache_whenGeneratingRandomAlphabeticString_thenCorrect() { String generatedString = RandomStringUtils.randomAlphabetic(10); System.out.println(generatedString); }

7. Generieren Sie eine alphanumerische Zeichenfolge mit Apache Commons Lang

Und schließlich - derselbe zufällig begrenzte String, aber diesmal - numerisch:

@Test public void givenUsingApache_whenGeneratingRandomAlphanumericString_thenCorrect() { String generatedString = RandomStringUtils.randomAlphanumeric(10); System.out.println(generatedString); }

Und da haben wir es: Erstellen von begrenzten und unbegrenzten Zeichenfolgen mit einfachem Java, einer Java 8-Variante oder der Apache Commons Library.

8. Fazit

Durch verschiedene Implementierungsmethoden konnten wir gebundene und ungebundene Zeichenfolgen mit einfachem Java, einer Java 8-Variante oder der Apache Commons Library generieren.

In diesen Java-Beispielen haben wir java.util.Random verwendet , aber ein erwähnenswerter Punkt ist, dass es nicht kryptografisch sicher ist. Verwenden Sie stattdessen java.security.SecureRandom für sicherheitsrelevante Anwendungen.

Die Implementierung all dieser Beispiele und Snippets finden Sie im GitHub-Projekt. Dies ist ein Maven-basiertes Projekt, daher sollte es einfach zu importieren und auszuführen sein.