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

자바스크립트로 문자열을 이진(Binary) 문자열로 변환하는 방법

이번 튜토리얼에서는 소문자 문자열을 입력받아 각 알파벳을 이진 숫자로 치환한 새로운 문자열을 반환하는 자바스크립트 함수를 작성해 보겠습니다.

변환 규칙은 다음과 같습니다.

  • a ~ m 범위의 알파벳 → 0
  • n ~ z 범위의 알파벳 → 1
  • 공백 및 특수 문자는 원본 그대로 유지

접근 방법

먼저 입력 문자열을 모두 소문자로 변환한 뒤, 각 문자를 하나씩 순회하며 해당 문자가 'm'보다 큰지 비교합니다. 'm'보다 크면 1을, 그렇지 않으면 0을 결과 문자열에 추가합니다. 한 가지 주의할 점은 공백이나 숫자처럼 대소문자 구분이 없는 문자인데, 이런 경우 toLowerCase()toUpperCase()의 결과가 동일하다는 성질을 이용해 별도 검사 후 원본 그대로 통과시킵니다.

코드 예제

const str = 'Hello worlld how are you';

const stringToBinary = (str = '') => {
   const s = str.toLowerCase();
   let res = '';
   for(let i = 0; i < s.length; i++){
      // 공백 및 특수 문자 처리
      if(s[i].toLowerCase() === s[i].toUpperCase()){
         res += s[i];
         continue;
      };
      if(s[i] > 'm'){
         res += 1;
      }else{
         res += 0;
      };
   };
   return res;
};

console.log(stringToBinary(str));

실행 결과

콘솔에 출력되는 결과는 다음과 같습니다.

00001 111000 011 010 111

결과 해설

입력 문자열을 소문자로 바꾸면 'hello worlld how are you'가 됩니다. 첫 단어 hello의 경우 h, e, l, l은 'm' 이하이므로 0, 마지막 o는 'm'보다 크므로 1이 되어 00001로 변환됩니다. 같은 원리로 두 번째 단어 worlld는 w, o, r이 1, l, l, d가 0이 되어 111000이 되고, 나머지 단어들도 순서대로 변환되어 위와 같은 최종 결과가 출력됩니다.