abbreviateName.js (8kyu 49)
Codewars 알고리즘 풀이
Problem
- Write a function to convert a name into initials.
- 이름을 이니셜로 반환한다.
- The output should be two capital letters with a dot seperating them.
- 점으로 구분된 두 개의 대문자로 출력한다.
Solution 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()
메소드문자열을 대문자로 변환한다.
Solution 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
Solution 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를 결합하고, 새 문자열로 반환한다.
Solution 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
: 전역 검색