문제

  • 이름을 이니셜로 반환한다.
  • 점으로 구분된 두 개의 대문자로 출력한다.

풀이 01

function abbreviateName(name) {
  let arr = name.split(' ');
  let firstName = arr[0];
  let lastName = arr[1];

  return `${firstName[0].toUpperCase()}.${lastName[0].toUpperCase()}`;
}

abbreviateName('Sam Azor');       // S.A
abbreviateName('sam azor');       // S.A
abbreviateName('Ralph Donovan');  // R.D
abbreviateName('ralph donovan');  // R.D
  • split(): 문자열을 부분 문자열로 분할하고, 새 배열로 반환한다.
  • toUpperCase(): 문자열을 대문자로 변환한다.

풀이 02

function abbreviateName(name) {
  let arr = name.split(' ');
  let firstInit = arr[0][0];
  let lastInit = arr[1][0];

  return `${firstInit.toUpperCase()}.${lastInit.toUpperCase()}`;
}

abbreviateName('Sam Azor');       // S.A
abbreviateName('sam azor');       // S.A
abbreviateName('Ralph Donovan');  // R.D
abbreviateName('ralph donovan');  // R.D

풀이 03

function abbreviateName(name) {
  return name.split(' ').map(i => i[0].toUpperCase()).join('.');
}

abbreviateName('Sam Azor');       // S.A
abbreviateName('sam azor');       // S.A
abbreviateName('Ralph Donovan');  // R.D
abbreviateName('ralph donovan');  // R.D
  • map(): 배열 내 모든 element에 대해, 호출한 함수의 결과를 모아 새 배열로 반환한다.
  • join(): 배열의 모든 element를 결합하고, 새 문자열로 반환한다.

풀이 04

function abbreviateName(name) {
  return name.match(/\b\w/g).join('.').toUpperCase();
}

abbreviateName('Sam Azor');       // S.A
abbreviateName('sam azor');       // S.A
abbreviateName('Ralph Donovan');  // R.D
abbreviateName('ralph donovan');  // R.D

정규표현식 (RegExp)

  • match(): 문자열에서 정규식과 일치하는 문자를 검색하고, 배열로 반환한다.
  • \b: 단어 경계에 대응
  • \w: 밑줄 문자를 포함한, 영숫자 문자에 대응 (= [A-Za-z0-9_])
  • g: 전역 검색