Java – 임의 문자열 생성

이 튜토리얼에서는 먼저 표준 Java 라이브러리를 사용한 다음 Java 8 변형을 사용하고 마지막으로 Apache Commons Lang 라이브러리를 사용하여 Java에서 임의의 문자열을 생성하는 방법을 보여줄 것입니다.

이 기사는 Baeldung에 대한 "Java – Back to Basic"시리즈의 일부입니다.

1. 일반 자바로 임의의 무제한 문자열 생성

간단하게 시작 하여 7 자로 묶인 임의의 문자열을 생성 해 보겠습니다 .

@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); }

새 문자열은 원격으로 영숫자가 아닐 것입니다.

2. 일반 Java로 임의 바인딩 된 문자열 생성

다음 – 더 제한된 임의의 문자열을 만드는 방법을 살펴 보겠습니다. 소문자 알파벳 문자와 설정된 길이를 사용하여 임의의 문자열 을 생성 할 것입니다 .

@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); }

3. Java 8로 임의의 알파벳 문자열 생성

이제 JDK 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); }

4. Java 8을 사용하여 임의의 영숫자 문자열 생성

그런 다음 영숫자 문자열 을 얻기 위해 문자 집합을 넓힐 수 있습니다 .

@Test public void givenUsingJava8_whenGeneratingRandomAlphanumericString_thenCorrect() 

범위를 벗어난 문자를 피하기 위해 65에서 90 사이의 유니 코드 문자를 제외하기 위해 위 의 필터 방법을 사용했습니다 .

5. Apache Commons Lang을 사용하여 바인딩 된 임의 문자열 생성

Apache의 Commons Lang 라이브러리는 무작위 문자열 생성에 많은 도움이됩니다. 문자 만 사용하여 제한된 문자열생성하는 방법을 살펴 보겠습니다 .

@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); }

따라서-Java 예제의 모든 저수준 코드 대신-이것은 간단한 한 줄로 수행됩니다.

6. Apache Commons Lang로 알파벳 문자열 생성

또 다른 매우 간단한 예입니다. 이번에는 알파벳 문자 만 포함하고 부울 플래그를 API에 전달하지 않는 제한된 문자열 입니다.

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

7. Apache Commons Lang로 영숫자 문자열 생성

마지막으로-동일한 임의의 경계 문자열 이지만 이번에는 숫자입니다.

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

그리고 우리는 그것을 가지고 있습니다 – 일반 Java, Java 8 변형 또는 Apache Commons Library를 사용 하여 제한 및 제한되지 않은 문자열생성 합니다.

8. 결론

다양한 구현 방법을 통해 일반 Java, Java 8 변형 또는 Apache Commons Library를 사용하여 바인딩 된 문자열과 바인딩되지 않은 문자열을 생성 할 수있었습니다.

이 Java 예제에서는 java.util.Random을 사용 했지만 언급 할 가치가있는 한 가지 사항은 암호 적으로 안전하지 않다는 것입니다. 사용을 고려 java.security.SecureRandom의를 보안에 민감한 애플리케이션을 위해 대신.

이러한 모든 예제 및 스 니펫의 구현은 GitHub 프로젝트에서 찾을 수 있습니다. 이것은 Maven 기반 프로젝트이므로 가져 오기 및 실행이 쉬워야합니다.