Java - Generer tilfeldig streng

I denne opplæringen skal vi vise hvordan du genererer en tilfeldig streng i Java - først ved hjelp av standard Java-biblioteker, deretter ved hjelp av en Java 8-variant, og til slutt ved hjelp av Apache Commons Lang-biblioteket.

Denne artikkelen er en del av "Java - Back to Basic" -serien her på Baeldung.

1. Generer tilfeldig ubegrenset streng med vanlig Java

La oss starte enkle og generere en tilfeldig String avgrenset til 7 tegn:

@Test offentlig ugyldighet givenUsingPlainJava_whenGeneratingRandomStringUnbounded_thenCorrect () {byte [] array = ny byte [7]; // lengde avgrenses av 7 nye Random (). nextBytes (array); StrenggenerertString = ny streng (matrise, Charset.forName ("UTF-8")); System.out.println (generatedString); }

Husk at den nye strengen ikke vil være noe eksternt alfanumerisk.

2. Generer tilfeldig avgrenset streng med vanlig Java

Neste - la oss se på å lage en mer begrenset tilfeldig streng; vi skal generere en tilfeldig String bruker små bokstaver og en bestemt lengde:

@Test offentlig ugyldighet givenUsingPlainJava_whenGeneratingRandomStringBounded_thenCorrect () {int leftLimit = 97; // bokstav 'a' int rightLimit = 122; // bokstav 'z' int targetStringLength = 10; Tilfeldig tilfeldig = ny Tilfeldig (); StringBuilder buffer = ny StringBuilder (targetStringLength); for (int i = 0; i <targetStringLength; i ++) {int randomLimitedInt = leftLimit + (int) (random.nextFloat () * (rightLimit - leftLimit + 1)); buffer.append ((char) randomLimitedInt); } StrenggenerertString = buffer.toString (); System.out.println (generatedString); }

3. Generer tilfeldige alfabetiske strenger med Java 8

La oss nå bruke det Tilfeldig.int - lagt til i JDK 8 - for å generere et alfabetisk stoff Streng:

@Test offentlig ugyldighet givenUsingJava8_whenGeneratingRandomAlphabeticString_thenCorrect () {int leftLimit = 97; // bokstav 'a' int rightLimit = 122; // bokstav 'z' int targetStringLength = 10; Tilfeldig tilfeldig = ny Tilfeldig (); String generatedString = random.ints (leftLimit, rightLimit + 1) .limit (targetStringLength) .collect (StringBuilder :: new, StringBuilder :: appendCodePoint, StringBuilder :: append) .toString (); System.out.println (generatedString); }

4. Generer tilfeldig alfanumerisk streng med Java 8

Og så kan vi utvide tegnsettet vårt for å få et alfanumerisk Streng:

@Test public void givenUsingJava8_whenGeneratingRandomAlphanumericString_thenCorrect () 

Legg merke til bruken av filter metoden ovenfor for å utelate Unicode-tegn mellom 65 og 90 - for å unngå tegn utenfor rekkevidden.

5. Generer avgrenset tilfeldig streng med Apache Commons Lang

Commons Lang-biblioteket fra Apache hjelper mye med tilfeldig strenggenerering. La oss ta en titt på generere en avgrenset String bruker bare bokstaver:

@Test offentlig ugyldighet givenUsingApache_whenGeneratingRandomStringBounded_thenCorrect () {int length = 10; boolsk useLetters = true; boolsk useNumbers = false; String generatedString = RandomStringUtils.random (lengde, useLetters, useNumbers); System.out.println (generatedString); }

Så - i stedet for all lavnivåkode i Java-eksemplet - gjøres denne med en enkel enlinje.

6. Generer alfabetisk streng med Apache Commons Lang

Et annet veldig enkelt eksempel - denne gangen en avgrenset String med bare alfabetiske tegn, men uten å sende boolske flagg til API: et:

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

7. Generer alfanumerisk streng med Apache Commons Lang

Og til slutt - den samme tilfeldige grensen String men denne gangen - numerisk:

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

Og der har vi det - skape avgrensede og ubegrensede strenger med enten vanlig Java, en Java 8-variant eller Apache Commons Library.

8. Konklusjon

Gjennom forskjellige implementeringsmetoder klarte vi å generere bundne og ubundne strenger ved hjelp av vanlig Java, en Java 8-variant eller Apache Commons Library.

I disse Java-eksemplene har vi brukt java.util.Random, men et poeng verdt å nevne er at det ikke er kryptografisk sikkert. Vurder å bruke java.security.SecureRandom i stedet for sikkerhetssensitive applikasjoner.

Implementeringen av alle disse eksemplene og utdragene finner du i GitHub-prosjektet. Dette er et Maven-basert prosjekt, så det skal være enkelt å importere og kjøre.


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