更新時(shí)間:2022-11-30 11:21:00 來源:動(dòng)力節(jié)點(diǎn) 瀏覽5318次
Java生成隨機(jī)字符串的方法有哪些?動(dòng)力節(jié)點(diǎn)小編來告訴大家。
1. 使用 Java 8+ 版本創(chuàng)建隨機(jī)字母 [az] 字符串,Java 8 引入Random.ints,——生成字母字符串
@Test
public void givenUsingJava8_whenGeneratingRandomAlphabeticString_thenCorrect() {
int leftLimit = 97; // letter 'a'
int rightLimit = 122; // letter 'z'
int targetStringLength = 10;
Random random = new Random();
String generatedString = random.ints(leftLimit, rightLimit + 1)
.limit(targetStringLength)
.collect(StringBuilder::new, StringBuilder::appendCodePoint, StringBuilder::append)
.toString();
System.out.println(generatedString);
}
2. 使用 Java 8+ 版本創(chuàng)建隨機(jī)字母數(shù)字 [0–9a-Z] 字符串,我們可以使用我們的字符集來獲取字母數(shù)字字符串。
@Test
public void givenUsingJava8_whenGeneratingRandomAlphanumericString_thenCorrect() {
int leftLimit = 48; // numeral '0'
int rightLimit = 122; // letter 'z'
int targetStringLength = 10;
Random random = new Random();
String generatedString = random.ints(leftLimit, rightLimit + 1)
.filter(i -> (i <= 57 || i >= 65) && (i <= 90 || i >= 97))
.limit(targetStringLength)
.collect(StringBuilder::new, StringBuilder::appendCodePoint, StringBuilder::append)
.toString();
System.out.println(generatedString);
}
3. 使用純 Java 創(chuàng)建隨機(jī)無界字符串,讓我們使用無界字符串制作 7 個(gè)字母的隨機(jī)字符串,為此您需要使用 byte[]。new Random().nextBytes(array)會(huì)為你工作。
@Test
public void givenUsingPlainJava_whenGeneratingRandomStringUnbounded_thenCorrect() {
byte[] array = new byte[7]; // length is bounded by 7
new Random().nextBytes(array);
String generatedString = new String(array, Charset.forName("UTF-8"));
System.out.println(generatedString);
}
4. 使用純 Java 創(chuàng)建隨機(jī)有界字符串,讓我們創(chuàng)建一個(gè)更受約束的隨機(jī)字符串;我們將使用小寫字母 [az] 和設(shè)定長(zhǎng)度生成一個(gè)隨機(jī)字符串,
@Test
public void givenUsingPlainJava_whenGeneratingRandomStringBounded_thenCorrect() {
int leftLimit = 97; // letter 'a'
int rightLimit = 122; // letter 'z'
int targetStringLength = 10;
Random random = new Random();
StringBuilder buffer = new StringBuilder(targetStringLength);
for (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(generatedString);
}
5. 使用 Apache Commons Lang 創(chuàng)建有界隨機(jī)字符串,Apache 的 Commons Lang 庫(kù)對(duì)隨機(jī)字符串生成有很大幫助。讓我們看一下僅使用字母創(chuàng)建有界字符串。
@Test
public void givenUsingApache_whenGeneratingRandomStringBounded_thenCorrect() {
int length = 10;
boolean useLetters = true;
boolean useNumbers = false;
String generatedString = RandomStringUtils.random(length, useLetters, useNumbers);
System.out.println(generatedString);
}
6. 使用 Apache Commons Lang 創(chuàng)建字母字符串 [非常流行],另一個(gè)非常流行的例子——這次是一個(gè)只有字母字符的有界字符串,但沒有將布爾標(biāo)志傳遞給 java 方法。
@Test
public void givenUsingApache_whenGeneratingRandomAlphabeticString_thenCorrect() {
String generatedString = RandomStringUtils.randomAlphabetic(10);
System.out.println(generatedString);
}
7. 使用 Apache Commons Lang 創(chuàng)建字母數(shù)字字符串相同的隨機(jī)有界字符串,但這次 — 包括數(shù)字。
@Test
public void givenUsingApache_whenGeneratingRandomAlphanumericString_thenCorrect() {
String generatedString = RandomStringUtils.randomAlphanumeric(10);
System.out.println(generatedString);
}
相關(guān)閱讀
Java實(shí)驗(yàn)班
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
Java就業(yè)班
有基礎(chǔ) 直達(dá)就業(yè)
Java夜校直播班
業(yè)余時(shí)間 高薪轉(zhuǎn)行
Java在職加薪班
工作1~3年,加薪神器
Java架構(gòu)師班
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問老師會(huì)電話與您溝通安排學(xué)習(xí)