[java] n자리 랜덤 문자열 생성 (문자 + 숫자)

Jinbro·2022년 8월 28일
0

Java

목록 보기
4/7

상황설정

  • 중복되지 않는 임의의 문자열을 요청 파라미터에 설정해주세요.
  • 문자열의 길이는 20 입니다.

단위테스트

  • 문자열 길이 설정
int randomStrLen = 0;
	
@BeforeEach
void initRandomStrLen() {
	// 랜덤 문자열 길이 설정
	randomStrLen = 20;
}

1. Random.nextBoolean 활용

@Test
void createRandomStrUsingRandomBoolean() {
	Random random = new Random();
	StringBuffer randomBuf = new StringBuffer();
	for (int i = 0; i < randomStrLen; i++) {
		// Random.nextBoolean() : 랜덤으로 true, false 리턴 (true : 랜덤 소문자 영어, false : 랜덤 숫자)
		if (random.nextBoolean()) {
			// 26 : a-z 알파벳 개수
			// 97 : letter 'a' 아스키코드
			// (int)(random.nextInt(26)) + 97 : 랜덤 소문자 아스키코드
			randomBuf.append((char)((int)(random.nextInt(26)) + 97));
		} else {
			randomBuf.append(random.nextInt(10));
		}
	}
	String randomStr = randomBuf.toString();
	System.out.println("[createRandomStrUsingRandomBoolean] randomStr : " + randomStr);
    // [createRandomStrUsingRandomBoolean] randomStr : iok887yt6sa31m99e4d6
		
	assertEquals(getStrLen(randomStr), randomStrLen);
}

2. RandomStringUtils.random 활용

@Test
void createRandomStrUsingUtilsRand() {
	boolean useLetters = true;
	boolean useNumbers = true;
	String randomStr = RandomStringUtils.random(randomStrLen, useLetters, useNumbers);
		
	System.out.println("[createRandomStrUsingUtilsRand] randomStr : " + randomStr);
    // [createRandomStrUsingUtilsRand] randomStr : 42POkSVNASCpK91ZC3QI
		
	assertEquals(getStrLen(randomStr), randomStrLen);
}

3. RandomStringUtils.randomAlphanumeric 활용

@Test
void createRandomStrUsingUtilsRandomAlphanumeric() {
	String randomStr = RandomStringUtils.randomAlphanumeric(randomStrLen);
		
	System.out.println("[createRandomStrUsingUtilsRandomAlphanumeric] randomStr : " + randomStr);
    // [createRandomStrUsingUtilsRandomAlphanumeric] randomStr : iB0H2HaVqOvTsvwckRoA
		
	assertEquals(getStrLen(randomStr), randomStrLen);
}

참고

  • import org.apache.commons.lang3.RandomStringUtils;
profile
자기 개발 기록 저장소

0개의 댓글