Java에서 임의 문자열 생성

K. Macharia 2023년10월12일
  1. 정규식을 사용하여 Java에서 임의 문자열 생성
  2. Math.random()메소드를 사용하여 Java에서 임의의 영숫자 문자열 생성
  3. Charset을 사용하여 생성
  4. Apache Commons Lang 사용
Java에서 임의 문자열 생성

영숫자 문자열에는 숫자 및 영문자가 포함됩니다. Java에는 영숫자 문자열이 사용되는 많은 경우가 있습니다. 예를 들어, 사용자가 애플리케이션에 등록한 후 비밀번호를 생성 할 때; 데이터베이스에서 요소를 식별하기 위해 기본 키 항목을 생성하는 단계; 특히 세션 ID를 생성 할 때

이 기사에서는 Java에서 임의의 영숫자 문자열을 생성하는 네 가지 방법에 대해 설명합니다.

  1. 정규식
  2. Math.random()메소드
  3. Charset
  4. Apache Commons Lang

정규식을 사용하여 Java에서 임의 문자열 생성

이 방법은 쉽고 소문자와 숫자에 대문자를 포함하는 영숫자 문자열을 제공합니다.

첫 번째는 0에서 256 사이의 문자를 가져 오는 것입니다.

두 번째 단계는 임의의 문자열에 포함하려는 요소로 남을 문자를 필터링하는 것입니다. 유지하려는 문자는 0-9 및 A-Z이므로 다른 모든 문자를 제거하는 필터를 만들 수 있습니다.

다음 단계는 임의의 문자를 선택하고StringBuffer에 추가하는 것입니다. 그런 다음toString()메소드를 사용하여 StringBuffer에서 문자열을 생성합니다.

아래는 샘플 코드입니다.

import java.nio.charset.*;
import java.util.*;

class GenerateAlphaNumericString {
  static String getRandomString(int i) {
    // bind the length
    bytearray = new byte[256];
    byte[] bytearray;
    String mystring;
    StringBuffer thebuffer;
    String theAlphaNumericS;

    new Random().nextBytes(bytearray);

    mystring = new String(bytearray, Charset.forName("UTF-8"));

    thebuffer = new StringBuffer();

    // remove all spacial char
    theAlphaNumericS = mystring.replaceAll("[^A-Z0-9]", "");

    // random selection
    for (int m = 0; m < theAlphaNumericS.length(); m++) {
      if (Character.isLetter(theAlphaNumericS.charAt(m)) && (i > 0)
          || Character.isDigit(theAlphaNumericS.charAt(m)) && (i > 0)) {
        thebuffer.append(theAlphaNumericS.charAt(m));
        i--;
      }
    }

    // the resulting string
    return thebuffer.toString();
  }

  public static void main(String[] args) {
    // the random string length
    int i = 15;

    // output
    System.out.println("A random string: " + getRandomString(i));
  }
}

출력:

A random string: 4H4V7FWP8ZUKEGW

Math.random()메소드를 사용하여 Java에서 임의의 영숫자 문자열 생성

가능한 모든 문자를 수동으로 포함하는 문자열을 만드는 작업이 포함됩니다. 그런 다음 이전에 만든 문자열에서 문자와 숫자를 선택하여 정의 된 길이의 임의 문자열을 만듭니다.

먼저,StringBuilderString이라는 두 개의 변수가 필요합니다. String은 알파벳의 모든 문자를 대문자로 포함하고 숫자 0-9를 포함합니다. 문자열에있는 문자의 색인이 문자를 무작위로 선택하는 데 사용되므로이 문자열에는 기호 나 공백이 없어야합니다.

둘째, 생성하려는 임의 문자열의 길이로 제한되는 반복을 정의합니다.

셋째,Math.random()메서드를 사용하여 임의의 인덱스를 생성합니다. 무작위로 생성 된 인덱스의 위치 인 이전에 생성 된 문자열에서 문자를 가져와StringBuilder에 추가합니다. 그런 다음toString()메소드를 사용하여 StringBuilder에서 임의의 문자열을 가져올 수 있습니다.

아래는 샘플 코드입니다.

class AlphaNumericStringGenerator {
  static String getRandomString(int i) {
    String theAlphaNumericS;
    StringBuilder builder;

    theAlphaNumericS = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
        + "0123456789";

    // create the StringBuffer
    builder = new StringBuilder(i);

    for (int m = 0; m < i; m++) {
      // generate numeric
      int myindex = (int) (theAlphaNumericS.length() * Math.random());

      // add the characters
      builder.append(theAlphaNumericS.charAt(myindex));
    }

    return builder.toString();
  }

  public static void main(String[] args) {
    // the random string length
    int i = 15;

    // output
    System.out.println("A random string: " + getRandomString(i));
  }
}

출력:

A random string: BCQJPZLG3OC1MQD

Charset을 사용하여 생성

java.nio.charset패키지에있는 Charset을 사용합니다. 문자 집합은 문자 집합을 나타내며 문자와 숫자 간의 매핑을 나타냅니다. Charset을 사용하여 영숫자 문자열을 만드는 과정은 아래에 설명되어 있습니다.

첫 번째 단계는 0에서 256 사이의 문자를 가져 오는 것입니다. 그런 다음Random()메서드가 위의 문자 배열에 적용됩니다. 세 번째 단계는 반복하여 각 문자가 알파벳인지 숫자인지 확인하는 것입니다. 둘 중 하나이면 정의 된 길이에 도달 할 때까지 해당 문자를 문자열 끝에 추가합니다. StringBuilder에 추가 된 문자는toString()메소드를 사용하여 원하는 문자열로 변환됩니다.

아래는 샘플 코드입니다.

import java.nio.charset.*;
import java.util.*;

class AlphaNumericStringGenerator {
  static String getRandomString(int i) {
    byte[] bytearray;
    String mystring;
    StringBuffer thebuffer;

    bytearray = new byte[256];
    new Random().nextBytes(bytearray);

    mystring = new String(bytearray, Charset.forName("UTF-8"));

    // Create the StringBuffer
    thebuffer = new StringBuffer();

    for (int m = 0; m < mystring.length(); m++) {
      char n = mystring.charAt(m);

      if (((n >= 'A' && n <= 'Z') || (n >= '0' && n <= '9')) && (i > 0)) {
        thebuffer.append(n);
        i--;
      }
    }

    // resulting string
    return thebuffer.toString();
  }

  public static void main(String[] args) {
    // the random string length
    int i = 15;

    // output
    System.out.println("A random string: " + getRandomString(i));
  }
}

출력:

A random string: XKT0JAHPRPZ6A3X

Apache Commons Lang 사용

제 3자가 구현 (이 경우Apache패키지)을 처리하므로 구현하기 가장 쉬운 방법입니다.

Apache Commons Lang패키지는 Java의 문자열 조작과 관련된 많은 도우미 유틸리티를 제공합니다. 타사이므로 먼저 프로젝트에서 종속성으로 추가해야합니다.

RandomStringUtils 클래스를 사용하여 임의의 문자열을 생성 할 수 있습니다.이 클래스에는 임의의 문자열을 제공 할 수있는 세 가지 메서드가 있습니다.

  1. RandomStringUtils.randomNumeric: 지정된 길이의 무작위 문자열을 생성합니다.
  2. RandomStringUtils.randomAlphabetic: 대문자와 소문자가있는 임의의 알파벳 문자열을 만듭니다.
  3. RandomStringUtils.randomAlphanumeric: 지정된 길이의 임의의 영숫자 문자열을 만듭니다.

아래는 코드 샘플입니다.

import org.apache.commons.lang3.RandomStringUtils;

public class Index {
  public static void main(String[] args) {
    System.out.println(RandomStringUtils.randomAlphanumeric(15) toUpperCase(););
  }
}

출력:

RM0WMYOKN7AS0KA

RandomStringUtils.randomAlphanumeric은 알파벳을 소문자 나 대문자 또는 둘 다로 사용하는 옵션과 함께 임의의 영숫자를 직접 구현합니다. 이는 코드 내에서 문자열 생성을 구현하지 않으려는 경우 효율적인 방법입니다. Apache 라이브러리는 강력하며 기본 수치 방법, 동시성 및 객체 반영과 같은 다른 기능을 많이 갖추고 있습니다.

관련 문장 - Java String