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

JavaScript로 문자열을 NATO 음성 알파벳으로 변환하는 방법


문제 상황

이번 글에서는 문자열을 입력받아 NATO 음성 알파벳(NATO Phonetic Alphabet)으로 변환하는 JavaScript 함수를 작성해 보겠습니다.

NATO 음성 알파벳은 무전 통신 등에서 철자를 명확하게 전달하기 위해 사용되는 표준 코드 체계로, 알파벳 26개 글자 각각에 다음과 같은 코드 워드가 대응됩니다.

Alfa, Bravo, Charlie, Delta, Echo, Foxtrot, Golf, Hotel, India, Juliett, Kilo, Lima, Mike, November, Oscar, Papa, Quebec, Romeo, Sierra, Tango, Uniform, Victor, Whiskey, X-ray, Yankee, Zulu

구현 방법

핵심 로직은 다음과 같습니다.

  • 알파벳 소문자와 NATO 코드 워드를 매핑한 객체를 준비합니다.
  • 입력 문자열을 한 글자씩 분리합니다.
  • 공백은 제거하고, 알파벳이 아닌 문자(숫자, 특수문자 등)는 그대로 유지합니다.
  • 각 글자를 대응하는 NATO 코드 워드로 치환한 뒤 공백으로 연결하여 반환합니다.

다음은 전체 구현 코드입니다.

const str = 'this is simple string';
const convertToNato = (str = '') => {
    let nato = {
        a: 'Alfa',
        b: 'Bravo',
        c: 'Charlie',
        d: 'Delta',
        e: 'Echo',
        f: 'Foxtrot',
        g: 'Golf',
        h: 'Hotel',
        i: 'India',
        j: 'Juliett',
        k: 'Kilo',
        l: 'Lima',
        m: 'Mike',
        n: 'November',
        o: 'Oscar',
        p: 'Papa',
        q: 'Quebec',
        r: 'Romeo',
        s: 'Sierra',
        t: 'Tango',
        u: 'Uniform',
        v: 'Victor',
        w: 'Whiskey',
        x: 'Xray',
        y: 'Yankee',
        z: 'Zulu'
    }
    let arr = [...str];
    return arr
    .filter((letter) => letter !== " ")
    .map((letter) => {
        if( /[^a-z]/.test(letter.toLowerCase()) ) { return letter }
        else { return nato[letter.toLowerCase()]; }
    }).join(' ');
};
console.log(convertToNato(str));

코드 설명

  • [...str]: 스프레드 연산자를 사용해 문자열을 개별 문자 배열로 변환합니다.
  • filter(): 공백 문자를 걸러냅니다.
  • map(): 정규식 /[^a-z]/로 알파벳 여부를 검사하여, 알파벳이면 NATO 코드 워드로, 아니면 원래 문자를 그대로 반환합니다.
  • join(' '): 변환된 결과를 공백으로 구분된 하나의 문자열로 합칩니다.

실행 결과

위 코드를 실행하면 콘솔에 다음과 같은 결과가 출력됩니다.

Tango Hotel India Sierra India Sierra Sierra India Mike Papa Lima Echo Sierra Tango Romeo India November Golf

입력 문자열의 각 글자가 순서대로 NATO 음성 알파벳 코드 워드로 변환된 것을 확인할 수 있습니다. 이 방식을 활용하면 무전 통신 시뮬레이션, 교육용 도구 등 다양한 곳에 응용할 수 있습니다.