Computer >> 컴퓨터 >  >> 프로그래밍 >> JavaScript

JavaScript에서 문자열을 원하는 길이까지 랜덤 소문자 알파벳으로 채우는 방법

문자열과 숫자를 인자로 받는 함수를 작성해야 합니다. 문자열의 길이는 항상 숫자보다 작거나 같다는 조건이 주어집니다. 우리가 해야 할 일은 문자열 끝에 랜덤한 소문자 알파벳을 추가하여 문자열의 길이를 정확히 해당 숫자와 일치시키고, 새로운 문자열을 반환하는 것입니다.

문제 접근 방식

이 문제는 재귀 함수를 활용하면 간단하게 해결할 수 있습니다. 문자열의 길이가 목표 길이보다 짧다면, 랜덤 소문자 하나를 생성하여 문자열 뒤에 붙인 후 다시 자기 자신을 호출합니다. 길이가 목표에 도달하면 완성된 문자열을 그대로 반환합니다.

랜덤 소문자 생성의 핵심은 Math.random()String.fromCharCode() 메서드입니다. 알파벳 'a'의 아스키 코드가 97이므로, 97부터 122('z') 사이의 코드 값을 만들어 문자로 변환하면 됩니다.

예제 코드

const padString = (str, len) => {
   if(str.length < len){
      const random = Math.floor(Math.random() * 26);
      const randomAlpha = String.fromCharCode(97 + random);
      return padString(str + randomAlpha, len);
   };
   return str;
};
console.log(padString('abc', 10));
console.log(padString('QWERTY', 10));
console.log(padString('HELLO', 30));
console.log(padString('foo', 10));

코드 작동 원리

  • Math.floor(Math.random() * 26): 0부터 25 사이의 정수를 무작위로 생성합니다. 알파벳은 총 26개이기 때문입니다.
  • String.fromCharCode(97 + random): 아스키 코드 97('a')에 랜덤 값을 더해 97~122 범위의 코드를 만들고, 이를 대응하는 소문자 알파벳으로 변환합니다.
  • 재귀 호출: 문자열에 랜덤 알파벳을 한 글자씩 추가하며 스스로를 다시 호출하고, 길이 조건을 만족하면 재귀가 종료됩니다.

출력 결과

콘솔에 출력되는 결과는 실행할 때마다 달라지며, 아래와 같은 형태입니다.

abckoniucl
QWERTYcwaf
HELLOdnulywbogqhypgmylqlvmckhg
Foofhfnhon

결과를 보면 원본 문자열 뒤에 랜덤한 소문자들이 붙어 정확히 지정된 길이만큼 채워진 것을 확인할 수 있습니다. 참고로 이미 길이가 충분한 문자열이 입력되면 아무 변경 없이 그대로 반환됩니다.