🗃️javascript/프로그래머스

문자열 정렬하기 (1)(Lv.0)[match(regexp)](regexp = 정규식)

하얀성 2023. 1. 3. 18:50
<문제 설명>

 

문자열 my_string이 매개변수로 주어질 때, my_string 안에 있는 숫자만 골라 오름차순 정렬한 리스트를 return 하도록 solution 함수를 작성해보세요.


제한사항
  • 1 ≤ my_string의 길이 ≤ 100
  • my_string에는 숫자가 한 개 이상 포함되어 있습니다.
  • my_string은 영어 소문자 또는 0부터 9까지의 숫자로 이루어져 있습니다. - - -
입출력 예my_stringresult
"hi12392" [1, 2, 2, 3, 9]
"p2o4i8gj2" [2, 2, 4, 8]
"abcde0" [0]

입출력 예 설명

입출력 예 #1

  • "hi12392"에 있는 숫자 1, 2, 3, 9, 2를 오름차순 정렬한 [1, 2, 2, 3, 9]를 return 합니다.

입출력 예 #2

  • "p2o4i8gj2"에 있는 숫자 2, 4, 8, 2를 오름차순 정렬한 [2, 2, 4, 8]을 return 합니다.

입출력 예 #3

  • "abcde0"에 있는 숫자 0을 오름차순 정렬한 [0]을 return 합니다.

<제출 답안>

function solution(my_string) {
    return [...my_string].filter(x => Number(x) < 10).sort((a,b) => a-b).map(x => Number(x))
}

 

Number(x) < 10 을 통해 0~9까지의 숫자를 골라냈다. 

하지만 아래처럼 정규식과 match함수를 통해 원하는 문자를 불러오는게 훨씬 편할 것이다.

function solution(my_string) {
  return my_string
    .match(/[0-9]/g)
    .map(str => +str)
    .sort((a, b) => a - b);
}

<보충>

 

 

match() 메서드는 문자열이 정규식과 매치되는 부분을 검색합니다.

문법

str.match(regexp)
Copy to Clipboard

매개변수

regexp

정규식 개체입니다. RegExp가 아닌 객체 obj가 전달되면, new RegExp(obj)를 사용하여 암묵적으로 RegExp로 변환됩니다. 매개변수를 전달하지 않고 match()를 사용하면, 빈 문자열:[""]이 있는 Array가 반환됩니다.

결과 값

문자열이 정규식과 일치하면, 일치하는 전체 문자열을 첫 번째 요소로 포함하는 Array를 반환한 다음 괄호 안에 캡처된 결과가 옵니다. 일치하는 것이 없으면 null이 반환됩니다.