문자열 my_string이 매개변수로 주어집니다. my_string안의 모든 자연수들의 합을 return하도록 solution 함수를 완성해주세요.
1 ≤ my_string의 길이 ≤ 1,000
my_string은 소문자, 대문자 그리고 한자리 자연수로만 구성되어있습니다.
my_string | result |
---|---|
"aAb1B2cC34oOp" | 10 |
"1a2b3c4d123" | 16 |
function solution(my_string) {
var answer = 0;
for (const char of my_string){
if(char.charCodeAt(0)>=48 && char.charCodeAt(0)<=57){
answer += Number(char)
}
}
return answer;
}
for of
로 문자열 하나씩 순회하며 그 값이 자연수인지 판단하고, 자연수이면 결과값과 더한다.
문자열 '0'~'9'는 유니코드로 48 ~ 57 사이의 값이다.
let zero = '0';
let nine = '9'
console.log(zero.charCodeAt(0)); // 48
console.log(nine.charCodeAt(0)); // 57
function solution(my_string) {
const answer = my_string.replace(/[^0-9]/g, '')
.split('')
.reduce((acc, curr) => acc + Number(curr), 0);
return answer;
}
/ /
: 사이 부분이 정규식패턴[^0-9]
: 숫자가 아닌 모든 문자 ([]
:문자클래스 / ^
: 부정)g
: global 플래그 / 정규식이 문자열 전체에서 일치하는 모든 부분을 찾도록 한다. 이 플래그가 없으면 첫 번째 일치만 찾아서 대체한다.?
연산자function solution(my_string) {
return [...my_string].reduce((acc,cur)=>Number(cur) ? +acc + +cur : acc, 0)
}
스프레드 연산자
를 문자열에 사용하였다.?
연산자 : NaN도 false값으로 판단한다.