Java - צור מחרוזת אקראית

במדריך זה אנו נראה כיצד ליצור מחרוזת אקראית ב- Java - תחילה באמצעות ספריות Java הרגילות, לאחר מכן באמצעות גרסת Java 8, ולבסוף באמצעות ספריית Apache Commons Lang.

מאמר זה הוא חלק מסדרת "Java - Back to Basic" כאן בבלדונג.

1. צור מחרוזת בלתי מוגבלת אקראית עם Java רגיל

נתחיל פשוט ונפיק אקראי חוּט מוגבל לשבעה תווים:

@Test הציבור בטל givenUsingPlainJava_whenGeneratingRandomStringUnbounded_thenCorrect () {בייט [] מערך = בתים חדשים [7]; // אורך מוגבל על ידי 7 אקראיים חדשים (). nextBytes (מערך); String generatedString = מחרוזת חדשה (מערך, Charset.forName ("UTF-8")); System.out.println (generatedString); }

זכור כי המחרוזת החדשה לא תהיה שום דבר אלפאנומרי מרחוק.

2. צור מחרוזת גבולות אקראית עם Java רגיל

לאחר מכן - בואו נסתכל על יצירת מחרוזת אקראית מוגבלת יותר; אנחנו הולכים לייצר אקראי חוּט באמצעות אותיות אלפביתיות קטנות ואורך מוגדר:

@Test הציבור בטל givenUsingPlainJava_whenGeneratingRandomStringBounded_thenCorrect () {int leftLimit = 97; // אות 'a' int rightLimit = 122; // אות 'z' int targetStringLength = 10; אקראי אקראי = אקראי חדש (); חיץ StringBuilder = StringBuilder חדש (targetStringLength); עבור (int i = 0; i <targetStringLength; i ++) {int randomLimitedInt = leftLimit + (int) (random.nextFloat () * (rightLimit - leftLimit + 1)); buffer.append ((char) randomLimitedInt); } מחרוזת generatedString = buffer.toString (); System.out.println (generatedString); }

3. צור מחרוזת אלפביתית אקראית עם Java 8

עכשיו, בואו נשתמש Random.ints - נוסף ב- JDK 8 - כדי ליצור אלפבית חוּט:

@Test הציבור בטל givenUsingJava8_whenGeneratingRandomAlphabeticString_thenCorrect () {int leftLimit = 97; // אות 'a' int rightLimit = 122; // אות 'z' int targetStringLength = 10; אקראי אקראי = אקראי חדש (); String generatedString = random.ints (leftLimit, rightLimit + 1) .limit (targetStringLength) .collect (StringBuilder :: new, StringBuilder :: appendCodePoint, StringBuilder :: append) .toString (); System.out.println (generatedString); }

4. צור מחרוזת אלפאנומרית אקראית עם Java 8

ואז נוכל להרחיב את מערך הדמויות שלנו על מנת לקבל אלפא-נומרי חוּט:

@ מבחן חלל ציבורי שניתן שימושJava8_whenGeneratingRandomAlphanumericString_thenCorrect () 

שימו לב לשימוש ב- לְסַנֵן השיטה לעיל כדי להשאיר תווי Unicode בין 65 ל 90 - כדי למנוע תווים מחוץ לטווח.

5. צור מחרוזת אקראית מוגבלת עם Apache Commons Lang

ספריית Commons Lang מבית Apache עוזרת מאוד לייצור מחרוזות אקראיות. בואו נסתכל על יצירת גבולות חוּט באמצעות אותיות בלבד:

@Test הציבור בטל givenUsingApache_whenGeneratingRandomStringBounded_thenCorrect () {int אורך = 10; שימוש בוליאני אותיות = נכון; שימוש בוליאני מספרים = שקר; מחרוזת generatedString = RandomStringUtils.random (אורך, useLetters, useNumbers); System.out.println (generatedString); }

אז - במקום כל הקוד ברמה הנמוכה בדוגמה של ג'אווה - זה נעשה עם קו פשוט אחד.

6. צור מחרוזת אלפביתית עם Apache Commons Lang

דוגמא נוספת ופשוטה מאוד - הפעם מוגבלת חוּט עם תווים אלפביתיים בלבד, אך מבלי להעביר דגלים בוליאניים ל- API:

@ מבחן חלל ציבורי givenUsingApache_whenGeneratingRandomAlphabeticString_thenCorrect () {String generatedString = RandomStringUtils.randomAlphabetic (10); System.out.println (generatedString); }

7. צור מחרוזת אלפא-נומרית עם Apache Commons Lang

ולבסוף - אותו מגביל אקראי חוּט אבל הפעם - מספרי:

@ מבחן חלל ציבורי givenUsingApache_whenGeneratingRandomAlphanumericString_thenCorrect () {String generatedString = RandomStringUtils.randomAlphanumeric (10); System.out.println (generatedString); }

ויש לנו את זה - יצירת מחרוזות מוגבלות ובלתי מוגבלות עם Java רגיל, גרסת Java 8 או ספריית Apache Commons.

8. מסקנה

באמצעות שיטות יישום שונות הצלחנו ליצור מחרוזות מאוגדות ולא מאוגדות, באמצעות Java רגיל, גרסה של Java 8 או ספריית Apache Commons.

בדוגמאות ג'אווה אלה השתמשנו java.util.Random, אך נקודה אחת שכדאי להזכיר היא שהיא אינה מאובטחת בהצפנה. שקול להשתמש java.security.SecureRandom במקום ליישומים הרגישים לאבטחה.

את היישום של כל הדוגמאות והקטעים הללו ניתן למצוא בפרויקט GitHub. זהו פרויקט מבוסס Maven כך שיהיה קל לייבא ולהפעיל אותו.