<숫자만 추출>
: 문자와 숫자가 섞여있는 문자열이 주어지면 그 중 숫자만 추출하여 그 순서대로 자연수를 만든다. 만약 "tag0a1h205er"에서 숫자만 추출하면 0, 1, 2, 0, 5이고 이것을 자연수를 만들면 1205가 된다.
- 첫 번째 방법 : 앞에서 배웠던 정규표현식으로 해결해도 되고, 아스키코드로 해결해도 된다.
- 두 번째 방법 : isNaN(Not a Number)메서드를 써서 해결해도 된다. 만약 숫자면 false가 나올 것이고, 숫자가 아니라면 true가 나올 것이다.
추가로 Number(x)를 하면 타입을 숫자타입으로 만들어 주는 거 같다.3. 정답
<script> function solution(str){ let answer=""; for(let x of str){ if(!isNaN(x)) answer+=x; } return parseInt(answer); } let str="g0en2T0s8eSoft"; console.log(solution(str)); </script>
<script> //만약 parseInt()를 쓰지 말라고 할 경우. function solution(str){ let answer =0; for(let x of str){ if(! isNaN(x)) answer = answer * 10 + Number(x) } return answer; } let str="g0en2T0s8eSoft"; console.log(solution(str)); </script>
<script> //아스키코드로 한 건데 왜 안되지... 틀린 거 없는 거 같은데 ㅜㅜ엉엉 function solution(str){ //for..of 로 해서, 하나로 바꾼 후 아스키코드 이용해서 추출해도 되겠다 let answer; let s = str.toUpperCase(); //1. 대문자로 변경 for(let x of s){ let num = x.charCodeAt(); //2. 유니코드로 변경. 대문자로 변경했으므로 65~90에 포함되지 않는 것들 추출 if( !(num >= 65 && num <= 90) ) answer += x; } return parseInt(answer); } let str="g0en2T0s8eSoft"; console.log(solution(str)); </script>
이 멍충이 새키야!!! 정규표현식을 왜 또 //가 아닌 \\로 하고 거기다가 ''는 또 왜 붙이냐고!!! .replace('[^]\','') ㅋㅋ 진짜 환장하겠다. 그래도 잘한점은 여러 방법으로 시도했다는 점..? 하지만 아직 모르는 게 많다. replace로 문자를 ''로 만드는 거 말고, 그냥 정규표현식으로 숫자만 추출해서 값을 만드는 건 없나..?