본문 바로가기
알고리즘/Codewars

[Codewars] Create Phone Number (6 kyu) / JavaScript

by fluss 2022. 11. 8.

https://www.codewars.com/kata/525f50e3b73515a6db000b83

 

Codewars - Achieve mastery through coding practice and developer mentorship

A coding practice website for all programming levels – Join a community of over 3 million developers and improve your coding skills in over 55 programming languages!

www.codewars.com

 

DESCRIPTION:

Write a function that accepts an array of 10 integers (between 0 and 9), that returns a string of those numbers in the form of a phone number.

 

Example

createPhoneNumber([1, 2, 3, 4, 5, 6, 7, 8, 9, 0]) // => returns "(123) 456-7890"

The returned format must be correct in order to complete this challenge.

Don't forget the space after the closing parentheses!

 

설명:

10개의 정수(0부터 9 사이)로 구성된 배열을 받아 전화번호 형식의 문자열로 반환하는 함수를 작성하세요.

 

예시

createPhoneNumber([1, 2, 3, 4, 5, 6, 7, 8, 9, 0]) // => returns "(123) 456-7890"

이 챌린지를 완성하려면 정확한 형식을 반환해야 합니다.

괄호로 닫은 다음 공백을 넣는 것을 잊지 마세요!

 

풀이

정규식을 이용해서 숫자를 3, 3, 4 자리로 구분하고 캡쳐링 그룹(Capturing group)으로 형식을 만들어주어 replace로 바꿔주었다.

 

코드

function createPhoneNumber(numbers){
  return numbers.join('').replace(/(\d{3})(\d{3})(\d{4})/, "($1) $2-$3");
}

 

다른 사람의 좋았던 풀이

function createPhoneNumber(numbers){
  var format = "(xxx) xxx-xxxx";
  
  for(var i = 0; i < numbers.length; i++)
  {
    format = format.replace('x', numbers[i]);
  }
  
  return format;
}

----------------------------------------------------------------------

function createPhoneNumber(numbers){
  numbers = numbers.join('');
  return '(' + numbers.substring(0, 3) + ') ' 
      + numbers.substring(3, 6) 
      + '-' 
      + numbers.substring(6);
}

----------------------------------------------------------------------

function createPhoneNumber(numbers){
  return numbers.join('').replace(/(...)(...)(.*)/, '($1) $2-$3');
}

----------------------------------------------------------------------

function createPhoneNumber(numbers){
   return numbers.reduce((p,c) => p.replace('x',c), "(xxx) xxx-xxxx");
}

 

참고

http://www.gisdeveloper.co.kr/?p=12281 

 

Javascript, 전화번호 형식으로 변경하는 함수 – GIS Developer

사용자가 원하는 형식으로 전화를 입력했을때 정해진 형식(xx-xxx-xxxx)으로 변경해주는 함수입니다. const formatPhoneNumber = (input) => { const cleanInput = input.replaceAll(/[^0-9]/g, ""); let result = ""; const length = cl

www.gisdeveloper.co.kr

 

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions/Quantifiers

 

Quantifiers - JavaScript | MDN

Quantifiers indicate numbers of characters or expressions to match.

developer.mozilla.org

 

https://javascript.info/regexp-groups#capturing-groups-in-replacement

 

Capturing groups

 

javascript.info

 

댓글