Java - Genereer een willekeurige string

In deze zelfstudie laten we zien hoe je een willekeurige tekenreeks in Java kunt genereren - eerst met behulp van de standaard Java-bibliotheken, vervolgens met een Java 8-variant en ten slotte met behulp van de Apache Commons Lang-bibliotheek.

Dit artikel maakt deel uit van de serie "Java - Back to Basic" hier op Baeldung.

1. Genereer een willekeurige, onbegrensde string met gewoon Java

Laten we eenvoudig beginnen en een random genereren Draad begrensd tot 7 karakters:

@Test openbare ongeldige gegevenUsingPlainJava_whenGeneratingRandomStringUnbounded_thenCorrect () {byte [] array = nieuwe byte [7]; // lengte wordt begrensd door 7 nieuwe Random (). nextBytes (array); String generatedString = nieuwe String (array, Charset.forName ("UTF-8")); System.out.println (generatedString); }

Houd er rekening mee dat de nieuwe tekenreeks niets op afstand alfanumeriek zal zijn.

2. Genereer een willekeurig begrensde string met gewoon Java

Vervolgens - laten we eens kijken naar het maken van een meer beperkte willekeurige string; we gaan een random genereren Draad met kleine letters en een vaste lengte:

@ Test openbare ongeldige gegevenUsingPlainJava_whenGeneratingRandomStringBounded_thenCorrect () {int leftLimit = 97; // letter 'a' int rightLimit = 122; // letter 'z' int targetStringLength = 10; Random random = nieuw Random (); StringBuilder-buffer = nieuwe StringBuilder (targetStringLength); voor (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. Genereer een willekeurige alfabetische reeks met Java 8

Laten we nu gebruiken Willekeurige afdrukken - toegevoegd in JDK 8 - om een ​​alfabetisch te genereren Draad:

@Test openbare leegte gegevenUsingJava8_whenGeneratingRandomAlphabeticString_thenCorrect () {int leftLimit = 97; // letter 'a' int rightLimit = 122; // letter 'z' int targetStringLength = 10; Random random = nieuw Random (); String generatedString = random.ints (leftLimit, rightLimit + 1) .limit (targetStringLength) .collect (StringBuilder :: nieuw, StringBuilder :: appendCodePoint, StringBuilder :: append) .toString (); System.out.println (generatedString); }

4. Genereer een willekeurige alfanumerieke reeks met Java 8

En dan kunnen we onze karakterset verbreden om een ​​alfanumeriek teken te krijgen Draad:

@Test openbare ongeldig gegevenUsingJava8_whenGeneratingRandomAlphanumericString_thenCorrect () 

Let op het gebruik van filter methode hierboven om Unicode-tekens tussen 65 en 90 weg te laten - om tekens buiten het bereik te vermijden.

5. Genereer een begrensde willekeurige string met Apache Commons Lang

De Commons Lang-bibliotheek van Apache helpt veel bij het genereren van willekeurige tekenreeksen. Laten we eens kijken genereren van een bounded Draad met alleen letters:

@ Test openbare ongeldig gegevenUsingApache_whenGeneratingRandomStringBounded_thenCorrect () {int lengte = 10; boolean useLetters = true; boolean useNumbers = false; String generatedString = RandomStringUtils.random (lengte, useLetters, useNumbers); System.out.println (generatedString); }

Dus - in plaats van alle low-level code in het Java-voorbeeld - wordt deze gedaan met een eenvoudige oneliner.

6. Genereer een alfabetische string met Apache Commons Lang

Nog een heel eenvoudig voorbeeld - deze keer een begrensd Draad met alleen alfabetische tekens, maar zonder booleaanse vlaggen door te geven aan de API:

@Test openbare leegte gegevenUsingApache_whenGeneratingRandomAlphabeticString_thenCorrect () {String generatedString = RandomStringUtils.randomAlphabetic (10); System.out.println (generatedString); }

7. Genereer een alfanumerieke string met Apache Commons Lang

En tot slot - dezelfde willekeurige begrensd Draad maar deze keer - numeriek:

@Test openbare ongeldige gegevenUsingApache_whenGeneratingRandomAlphanumericString_thenCorrect () {String generatedString = RandomStringUtils.randomAlphanumeric (10); System.out.println (generatedString); }

En daar hebben we het - het creëren van begrensde en onbegrensde strings met ofwel gewoon Java, een Java 8-variant of de Apache Commons-bibliotheek.

8. Conclusie

Door verschillende implementatiemethoden waren we in staat om gebonden en niet-gebonden strings te genereren, met behulp van gewoon Java, een Java 8-variant of de Apache Commons-bibliotheek.

In deze Java-voorbeelden hebben we java.util.Random, maar een punt dat het vermelden waard is, is dat het niet cryptografisch veilig is. Overweeg om te gebruiken java.security.SecureRandom in plaats daarvan voor beveiligingsgevoelige applicaties.

De implementatie van al deze voorbeelden en fragmenten is te vinden in het GitHub-project. Dit is een op Maven gebaseerd project, dus het moet gemakkelijk te importeren en uit te voeren zijn.


$config[zx-auto] not found$config[zx-overlay] not found