Java - Véletlen karakterlánc generálása

Ebben az oktatóanyagban bemutatjuk, hogyan lehet véletlenszerű karakterláncot létrehozni a Java-ban - először a szokásos Java könyvtárak, majd egy Java 8 variáns, végül pedig az Apache Commons Lang könyvtár használatával.

Ez a cikk a „Java - Vissza az alapokhoz” sorozat része, itt, Baeldungon.

1. Véletlenszerű, korlátlan karakterlánc generálása egyszerű Java-val

Kezdjük egyszerűen, és generálunk egy véletlenszerűt Húr 7 karakterre korlátozva:

@Test public void givenUsingPlainJava_whenGeneratingRandomStringUnbounded_thenCorrect () {byte [] tömb = new byte [7]; // a hosszúságot 7 új Random () határolja. nextBytes (tömb); String generatedString = új karakterlánc (tömb, Charset.forName ("UTF-8")); System.out.println (generáltString); }

Ne feledje, hogy az új karakterlánc nem lesz távolról alfanumerikus.

2. Véletlenszerűen kötött karakterlánc generálása egyszerű Java-val

Következő - nézzük meg egy korlátozottabb véletlenszerű karakterlánc létrehozását; generálunk egy véletlenszerűt Húr kisbetűs betűket és meghatározott hosszúságot használva:

@Test public void givenUsingPlainJava_whenGeneratingRandomStringBounded_thenCorrect () {int leftLimit = 97; // 'a' betű int rightLimit = 122; // 'z' betű int targetStringLength = 10; Véletlenszerű véletlenszerű = új Véletlenszerű (); StringBuilder puffer = new StringBuilder (targetStringLength); mert (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 (generáltString); }

3. Véletlenszerű ábécés karakterláncok generálása a Java 8 segítségével

Most használjuk Random.ints - a JDK 8-ban hozzáadva - ábécé előállításához Húr:

@Test public void givenUsingJava8_whenGeneratingRandomAlphabeticString_thenCorrect () {int leftLimit = 97; // 'a' betű int rightLimit = 122; // 'z' betű int targetStringLength = 10; Véletlenszerű véletlenszerű = új Véletlenszerű (); String generatedString = random.ints (leftLimit, rightLimit + 1) .limit (targetStringLength) .collect (StringBuilder :: new, StringBuilder :: appendCodePoint, StringBuilder :: append) .toString (); System.out.println (generáltString); }

4. Véletlenszerű alfanumerikus karakterlánc generálása a Java 8 segítségével

Ezután kibővíthetjük karakterkészletünket, hogy alfanumerikus számot kapjunk Húr:

@Test public void givenUsingJava8_whenGeneratingRandomAlphanumericString_thenCorrect () 

Figyelje meg a szűrő a fenti módszer az Unicode karakterek 65 és 90 közötti kihagyására - a tartományon kívül eső karakterek elkerülésére.

5. Készítsen korlátozott véletlenszerű karakterláncot az Apache Commons Lang segítségével

Az Apache-ból származó Commons Lang könyvtár sokat segít a véletlenszerű karakterláncok létrehozásában. Vessünk egy pillantást korlátozott generálása Húr csak betűket használva:

@Test public void givenUsingApache_whenGeneratingRandomStringBounded_thenCorrect () {int hossz = 10; logikai felhasználásLetters = true; boolean useNumbers = hamis; String generatedString = RandomStringUtils.random (hossz, useLetters, useNumbers); System.out.println (generáltString); }

Tehát - a Java példában szereplő összes alacsony szintű kód helyett - ez egy egyszerű egysoros vonallal történik.

6. Készítsen ábécés karakterláncot az Apache Commons Lang segítségével

Egy másik nagyon egyszerű példa - ezúttal korlátos Húr csak ábécés karakterekkel, de logikai jelzők átadása nélkül az API-ban:

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

7. Alphanumeric string létrehozása az Apache Commons Lang segítségével

És végül - ugyanaz a véletlenszerű határolt Húr de ezúttal - numerikus:

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

És itt van - korlátozott és korlátlan húrok létrehozása vagy sima Java-val, egy Java 8 variánssal, vagy az Apache Commons könyvtárral.

8. Következtetés

Különböző megvalósítási módszerek segítségével kötött és nem kötött karakterláncokat tudtunk előállítani egyszerű Java, Java 8 variáns vagy Apache Commons könyvtár segítségével.

Ezekben a Java példákban használtuk java.util.Random, de megemlítendő egy pont, hogy nem kriptográfiailag biztonságos. Fontolja meg a java.security.SecureRandom ehelyett a biztonság szempontjából érzékeny alkalmazásokhoz.

Mindezen példák és kivonatok megvalósítása megtalálható a GitHub projektben. Ez egy Maven-alapú projekt, így könnyen importálhatónak és futtathatónak kell lennie.