오늘의 스터디 문제 목록
이 문제에서 문자열을 받아서 그 문자열에 숫자로 판별하는 법으로 Number()를 사용했는데... 자꾸 통과가 안 돼서 짜증 났었다... 그래서 스터디 시간에 ㅎㄱ님이 발표하시는 것을 설명 듣고 무릎 탁...!
<< 내가 작성한 코드 >>
function solution(s) {
let length = s.length
if (length === 4 || length === 6){ // 길이가 4 혹은 6이고
// 문자열이 숫자인지 확인하는 방법으로 Number() 사용
if(!!Number(s) === true){ // 숫자로만 구성됐다면 true 리턴
return true;
}
else{
return false;
}
}
return false; // 나머지는 다 false
}
// Number()는 인자로 전달된 문자열이 숫자일 때 Number 객체가 리턴되고, 숫자가 아니면 NaN이 리턴됩니다.
!을 두번 붙이면 NaN은 false가 되며, Number는 true가 됩니다.
위의 주석을 보고 Number()를 썼는데 Number에 문자열을 통채로 넣어서 해서 안 됐나부다.
그러니까 만약 매개변수 s에 '0xf5'라는 문자열이 들어왔을 때 이 문자열에 해당하는 숫자로 변환이 된다는 것이다... ㅠ
그래서 문자열의 0, x, f, 5 이렇게 문자 요소 하나하나를 Number()로 확인해야 숫자인지 아닌지 판별이 가능하다는 것!!
for(let i of s){
// 문자 요소 하나하나를 숫자인지 판별을 해서 만약 NaN이라면 숫자가 아니므로 false가 출력!!
if(Number.isNaN(Number(i))){
return = false }
}
+ ㅈㅎ님의 코드, 정규식으로 판별!!
정규표현식 match를 사용하셨담
s.match(/[a-zA-Z/g] === null)
- s에 문자 소문자 a-z까지 대문자 A-Z까지 있는지 판별하고 g는 문자열 모든 패턴을 검색하는 것이라고 하셨다!!
- 숫자로만 구성이 됐다면 아무것도 없는 null이 나올 테니 null이면 true로!