Java에서 임의 문자열 생성
- 정규식을 사용하여 Java에서 임의 문자열 생성
-
Math.random()
메소드를 사용하여 Java에서 임의의 영숫자 문자열 생성 - Charset을 사용하여 생성
- Apache Commons Lang 사용
영숫자 문자열에는 숫자 및 영문자가 포함됩니다. Java에는 영숫자 문자열이 사용되는 많은 경우가 있습니다. 예를 들어, 사용자가 애플리케이션에 등록한 후 비밀번호를 생성 할 때; 데이터베이스에서 요소를 식별하기 위해 기본 키 항목을 생성하는 단계; 특히 세션 ID를 생성 할 때
이 기사에서는 Java에서 임의의 영숫자 문자열을 생성하는 네 가지 방법에 대해 설명합니다.
- 정규식
Math.random()
메소드Charset
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에서 임의의 영숫자 문자열 생성
가능한 모든 문자를 수동으로 포함하는 문자열을 만드는 작업이 포함됩니다. 그런 다음 이전에 만든 문자열에서 문자와 숫자를 선택하여 정의 된 길이의 임의 문자열을 만듭니다.
먼저,StringBuilder
및String
이라는 두 개의 변수가 필요합니다. 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 클래스
를 사용하여 임의의 문자열을 생성 할 수 있습니다.이 클래스에는 임의의 문자열을 제공 할 수있는 세 가지 메서드가 있습니다.
RandomStringUtils.randomNumeric
: 지정된 길이의 무작위 문자열을 생성합니다.RandomStringUtils.randomAlphabetic
: 대문자와 소문자가있는 임의의 알파벳 문자열을 만듭니다.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 라이브러리는 강력하며 기본 수치 방법, 동시성 및 객체 반영과 같은 다른 기능을 많이 갖추고 있습니다.