[자바스크립트]문자열 다루기 기본

웹 개발자(백엔드)·2021년 8월 19일
0

코딩테스트_sql

목록 보기
11/15

문제 설명
문자열 s의 길이가 4 혹은 6이고, 숫자로만 구성돼있는지 확인해주는 함수, solution을 완성하세요. 예를 들어 s가 "a234"이면 False를 리턴하고 "1234"라면 True를 리턴하면 됩니다.

문자열이 숫자인지 어떻게 아나??

-> 답은 isNaN()메서드가 있다.
ex) isNaN("123") //false

isNaN()은 숫자가 아닌지를 검사하는거다. 그래서 숫자면 false를 리턴함. Not a Number임.

내가 쓴 코드:

function solution(s) {
    var answer = true;
    
answer = ((s.length==4 || s.length==6) && !isNaN(s)) ? true : false;
    
    return answer;
}

결과: 93/100점 (testcase 11번이 통과가 안됐다.)

무엇이 틀렸나?

-> e를 지수표현하는 문자로 쓸때가 있다보니 저건 숫자로 변환하고
소수도 숫자로 인식한다고 한다.

isNaN을 쓰면 안된다.

isNaN보단 0-9를 포함하는지 체크하는거로 고쳐보는게 좋겠다

그것은 바로 /^[0-9]+$/.test(s)
정규 표현식!

정규표현식에 대해 좀 더 자세히 알아보자.

정규표현식이란?
문자열에 나타는 특정 문자 조합과 대응시키기 위해 사용되는 패턴이다.
좀 더 쉽게 말하면
문자열을 처리하는 방법 중의 하나로 특정한 조건의 문자를 '검색'하거나 '치환'하는 과정을 매우 간편하게 처리 할 수 있도록 하는 수단이다.

다른 사람이 쓴 코드
1)

function alpha_string46(s){
  var regex = /^\d{6}$|^\d{4}$/;
  return regex.test(s);
}

2)

 function solution(s) {
    var answer = true;    
	answer  = ((s.length==4 || s.length==6) && /^[0-9]+$/.test(s)) ? true : false;
    return answer;
}

정규표현식에 대해 공부해보자.

1) ^(caret): 문자열의 시작 / [] 안에서 사용되면 not의 의미
->[^] : 문자 집합 구성원을 제외하고 일치, [^abc] : a, b, c 제외한 모든 문자

2) $: 문자열의 끝

3) \: 다음에 오는 문자를 이스케이프

4) .(point): 어떠한 문자, 공백, 특수문자 상관없이 모든 것을 가리킴 (와일드 카드와 비슷)
-> 모든 문자 일치

5) []: []안의 문자와 통틀어 1 문자로 인식됨 / []안의 문자에 해당되는 어떠한 문자든 찾아냄
-> 문자 집합 구성원 중 하나와 일치
ex) [abc] : a 혹은 b 혹은 c

6) -: range

7) |: 서브패턴 / 쉽게 말해 or 연산자와 비슷

참고자료 : https://myeonguni.tistory.com/1555

0개의 댓글