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.