문자열 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값으로 판단한다.