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.