Java - Zufällige Zeichenfolge generieren

Java - Zufällige Zeichenfolge generieren

In diesem Artikel wird gezeigt, wie ein zufälliger String in Java generiert wird - zuerst mit den Standard-Java-Bibliotheken und mitthe Apache Commons Lang library.

Dieser Artikel ist Teil vonthe “Java – Back to Basic” series hier am Beispiel.

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

Beginnen wir einfach und generieren eine zufällige Zeichenfolge mit 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);
}

Denken Sie daran, dass der neue String nicht aus der Ferne alphanumerisch ist.

Weitere Lektüre:

Effizienter Wortfrequenzrechner in Java

Erforschen Sie verschiedene Methoden zum Zählen von Wörtern in Java und sehen Sie, wie diese funktionieren.

Read more

Java - Random Long, Float, Integer und Double

Erfahren Sie, wie Sie in Java Zufallszahlen generieren - sowohl unbegrenzt als auch innerhalb eines bestimmten Intervalls.

Read more

Anleitung zum Java String Pool

Erfahren Sie, wie die JVM die dem String-Speicher im Java-String-Pool zugewiesene Speichermenge optimiert.

Read more

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

Weiter - Schauen wir uns an, wie Sie einen eingeschränkteren zufälligen String 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 einen begrenzten zufälligen String mit Apache Commons Lang

Die Commons Lang-Bibliothek von Apache hilft bei der zufälligen Generierung von Strings. Werfen wir einen Blick aufgenerating a bounded String using only letters:

@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.

4. Generieren Sie eine alphabetische Zeichenfolge mit Apache Commons Lang

Ein weiteres sehr einfaches Beispiel - diesmal eine begrenzte Zeichenfolge 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);
}

5. 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 Sie es -creating bounded and unbounded Strings mit einfachem Java oder der Apache Commons Library.

6. Fazit

Durch verschiedene Implementierungsmethoden konnten wir gebundene und ungebundene Zeichenfolgen mit einfachem Java oder der Apache Commons Library generieren.

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