본문 바로가기
dev/javascript

[javascript] 자바스크립트 랜덤 문자열 만들기

by 최연탄 2022. 9. 27.
728x90
반응형

간단하게 랜덤 문자열 만들기

자바스크립트에서 임의의 문자열을 생성하는 방법은 여러 가지가 있습니다. 가장 빠른 방법은 Math.random() 메소드를 사용하는 것 입니다.

Math.random() 메소드는 0(이상)과 1(미만) 사이의 난수를 반환합니다. 이 난수를 문자열로 변환한 후 소수점 표시를 제거하면 됩니다.

const rand = Math.random().toString().substr(2, 8);

위의 예제는 8개의 숫자로 된 랜덤 문자열을 만들어 냅니다.

영숫자 문자열을 생성하려면 2에서 36 사이의 값을 toString() 메소드의 매개변수인 radix로 넘기면 됩니다. 이는 결과 값의 진법을 정의하는 것 입니다. 이진수 문자열(0~1)을 얻으려면 toString() 메소드의 radix에 2를 넣으면 됩니다.

const binary = Math.random().toString(2).substr(2, 8);

여기서 알파벳이 섞인 랜덤 문자열을 얻으려면 toString() 메소드의 매개변수인 radix에 16 이나 이보다 큰 값을 넣으면 됩니다.

const rand = Math.random().toString(16).substr(2, 8);

이제 위의 코드를 활용해 원하는 글자 수를 입력하면 랜덤 문자열을 리턴하는 함수를 만들어 보겠습니다.

const random = (length = 8) => {
  return Math.random().toString(16).substr(2, length);
};

console.log(random());
console.log(random(6));
console.log(random(10));
console.log(random(14));

긴 랜덤 문자열 생성하기

14 글자 이상의 긴 랜덤 문자열을 생성하기 위해서는 자신만의 랜덤 문자열 생성기를 만들어야 합니다. 다음의 예제는 'A~Z', 'a~z, '0~9' 중 하나를 랜덤하게 선택해 문자열을 만드는 것을 보여줍니다.

const random = (length = 8) => {
  const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
  let str = '';

  for (let i = 0; i < length; i++) {
    str += chars.charAt(Math.floor(Math.random() * chars.length));
  }

  return str;

};

console.log(random());
console.log(random(12));
console.log(random(20));

위 예제에서는 Math.random() 메소드와 Math.floor() 메소드를 사용해 랜덤한 문자열의 인덱스를 생성해 주어진 문자열에서 랜덤으로 문자를 선택하게 했습니다. 또한 for loop를 사용해 랜덤으로 선택된 문자를 문자열로 만들도록 작성되었습니다.

관련 글

숫자 반올림, 올림, 내림

랜덤 숫자 생성하기

forEach, map, filter, find

forEach 루프

반응형

댓글