[JAVA] 랜덤 문자열 생성 방법

    테스트 용도라든지, 아니면 랜덤성 ID를 만든다던지 기타 등등 랜덤 문자열이 필요한 경우가 있다. 랜덤 문자열을 만드는 방법을 여러가지 있지만, 여기서는 간단하게 랜덤 함수를 만들어서 생성하는 것을 포스팅하고자 한다.




    public static void main(String[] args) {

    System.out.println(randomAlphaWord(30));

    System.out.println(randomAlphaWord(25));

    System.out.println(randomAlphaWord(40));

    }



    /**

     * int를 받아서, 랜덤 알파벳을 출력함

     * 

     * @param wordLength

     * @return

     */

    public static String randomAlphaWord(int wordLength) {

    Random r = new Random();

    StringBuilder sb = new StringBuilder(wordLength);

    for(int i = 0; i < wordLength; i++) {

    char tmp = (char) ('a' + r.nextInt('z' - 'a'));

    sb.append(tmp);

    }

    return sb.toString();

    }


    위 방식은 ascii 코드 값을 이용하여 알파벳을 생성하는 방식이다. 숫자와 알파벳, 아니 모든 문자는 index 값이 존재하는데 대문자는 "A"가 65이고, "Z"가 90이다. 소문자 "a"는 97이고, "z"는 122 값을 가지고 있다. 


    해당 메소드는 소문자만 출력하는데 대소문자 모두 출력하고 싶을 경우 91 ~ 96번째의 값이 나올 경우, 값을 대치하는 식의 로직을 넣어서 (char) ('A' + r.nextInt('z' - 'A') 를 추가하면 될 것이다.


    위의 실행하면 필자의 컴퓨터에서는 아래와 같이 결과가 출력되었다

    xfvpyghqoxcvspwviclneeaugkxtve

    hexqjasvqmabrrwlhwlrnlbkr

    trududwppigtrqtylktvwfskcnoxnyfwdomwgtru


    너무나 당연한 얘기지만, 랜덤이기 때문에 다 다르게 출력이 될 것이다. (필자랑 동일한 값이 출력되면 로또를 사도록 하자)


    반응형

    댓글

    Designed by JB FACTORY