Java - generovanie náhodných reťazcov

V tomto tutoriáli si ukážeme, ako vygenerovať náhodný reťazec v prostredí Java - najskôr pomocou štandardných knižníc Java, potom pomocou variantu Java 8 a nakoniec pomocou knižnice Apache Commons Lang.

Tento článok je súčasťou série „Java - Späť na základné“ tu na Baeldungu.

1. Vytvorte náhodný neobmedzený reťazec pomocou obyčajnej Javy

Začnime jednoducho a vygenerujme náhodný String obmedzený na 7 znakov:

@Test public void givenUsingPlainJava_whenGeneratingRandomStringUnbounded_thenCorrect () {byte [] pole = nový bajt [7]; // dĺžka je ohraničená 7 novými Random (). nextBytes (pole); Reťazec generovanýString = nový Reťazec (pole, Charset.forName ("UTF-8")); System.out.println (generatedString); }

Pamätajte, že nový reťazec nebude vzdialene alfanumerický.

2. Vytvorte náhodný ohraničený reťazec pomocou obyčajnej Javy

Ďalej - pozrime sa na vytvorenie obmedzenejšieho náhodného reťazca; vygenerujeme náhodný String pomocou malých abecedných písmen a nastavenej dĺžky:

@Test public void givenUsingPlainJava_whenGeneratingRandomStringBounded_thenCorrect () {int leftLimit = 97; // písmeno 'a' int rightLimit = 122; // písmeno 'z' int targetStringLength = 10; Random random = nový Random (); StringBuilder buffer = nový StringBuilder (targetStringLength); pre (int i = 0; i <targetStringLength; i ++) {int randomLimitedInt = leftLimit + (int) (random.nextFloat () * (rightLimit - leftLimit + 1)); buffer.append ((char) randomLimitedInt); } Reťazec generovanýString = buffer.toString (); System.out.println (generatedString); }

3. Vytvorte náhodný abecedný reťazec v prostredí Java 8

Teraz poďme Random.ints - pridané v JDK 8 - na vygenerovanie abecedného písma Reťazec:

@Test public void givenUsingJava8_whenGeneratingRandomAlphabeticString_thenCorrect () {int leftLimit = 97; // písmeno 'a' int rightLimit = 122; // písmeno 'z' int targetStringLength = 10; Random random = nový Random (); String generovanýString = random.ints (leftLimit, rightLimit + 1) .limit (targetStringLength) .collect (StringBuilder :: new, StringBuilder :: appendCodePoint, StringBuilder :: append) .toString (); System.out.println (generatedString); }

4. Vytvorte náhodný alfanumerický reťazec v prostredí Java 8

A potom môžeme rozšíriť našu znakovú sadu, aby sme získali alfanumerický kód Reťazec:

@Test public void givenUsingJava8_whenGeneratingRandomAlphanumericString_thenCorrect () 

Všimnite si použitie filter vyššie uvedená metóda na vynechanie znakov Unicode medzi 65 a 90 - aby sa zabránilo znakom mimo rozsahu.

5. Vytvorte ohraničený náhodný reťazec s programom Apache Commons Lang

Knižnica Commons Lang od Apache veľmi pomáha pri generovaní náhodných reťazcov. Poďme sa na to pozrieť generovanie ohraničeného String iba pomocou písmen:

@Test public void givenUsingApache_whenGeneratingRandomStringBounded_thenCorrect () {int dĺžka = 10; boolean useLetters = true; boolean useNumbers = false; Reťazec generovanýString = RandomStringUtils.random (dĺžka, useLetters, useNumbers); System.out.println (generatedString); }

Takže - namiesto všetkého kódu na nízkej úrovni v príklade Java - je tento vyrobený pomocou jednoduchej jednoriadkovej linky.

6. Vytvorte abecedný reťazec pomocou Apache Commons Lang

Ďalší veľmi jednoduchý príklad - tentokrát ohraničený String iba s abecednými znakmi, ale bez prenášania logických vlajok do API:

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

7. Vytvorte alfanumerický reťazec pomocou Apache Commons Lang

A nakoniec - rovnaké náhodné ohraničené String ale tentokrát - číselné:

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

A máme to - vytváranie ohraničených a neviazaných reťazcov s obyčajnou Javou, variantom Java 8 alebo knižnicou Apache Commons.

8. Záver

Prostredníctvom rôznych implementačných metód sme boli schopní generovať viazané a neviazané reťazce pomocou obyčajnej Javy, variantu Java 8 alebo knižnice Apache Commons.

V týchto príkladoch Java sme použili java.util.Random, ale jeden bod, ktorý stojí za zmienku, je, že nie je kryptograficky bezpečný. Zvážte použitie java.security.SecureRandom namiesto toho pre aplikácie citlivé na zabezpečenie.

Implementáciu všetkých týchto príkladov a úryvkov nájdete v projekte GitHub. Toto je projekt založený na Maven, takže by malo byť ľahké ho importovať a spustiť.


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