TIL | JavaScript Replit [19. String]

Wook·2021년 11월 17일
0

String의 slice() 는 자주 사용 되는 문자열 메소드 중 하나 입니다.

🏫Assignment

  • sliceCityFromAddress 함수는 address 를 인자로 받습니다.
  • address 는 주소를 나타내는 string 입니다.
  • 주어진 주소가 어느 도시 인지를 찾아 해당 주소에서 도시 부분만 삭제한 새로운 주소를 리턴해 주세요.
  • 도시는 무조건 "시" 로 끝납니다. 예를 들어, "서울시".
  • "도" 와 "시" 는 주소에 한번 밖에 포함되어 있지 않습니다.

예를 들어, 다음과 같은 주소가 주어졌다면,

"경기도 성남시 분당구 중앙공원로 53"

다음과 같은 값이 리턴되어야 합니다.

"경기도 분당구 중앙공원로 53"

Javascript replit을 풀던 중 String의 splice 함수를 활용하는 문제를 접하였다.
문제에 대한 접근으로 "indexOf" 함수를 활용하여 '시'의 index 값을 추출하여 그를 기준으로 address를 "slice" 해주어 "시"를 제외한 새로운 문자열을 return 해주는 방식을 생각하였다.

<초기코드>

// Assignment - 다음 함수 안에 코드를 구현하세요
function sliceCityFromAddress(address) {
  // your code here
  
  let length = address.length; // 주소의 길이
  let siIndex = address.indexOf('시');  // '시'의 indexNumber
  let doIndex = address.indexOf('도');  // '도'의 indexNumber
  
  let newAddress = address.slice(0,doIndex+1)+address.slice(siIndex+1) //
  return newAddress;
  
  
}

module.exports = {sliceCityFromAddress}

**초기 코드에서는 3개의 테스트 케이스중 2개의 테스트 케이스에서 성공하였다.
경기도 성남시 분당구 ~~ 등의 2개의 케이스는 성공하였으나,
"도"로 시작하지 않는 (예를 들면 "서울시 성북구 돈암동"같은 서울시의 경우) 경우인 1개의 테스트 케이스에서 newAddress의 첫번째 value가 공백으로 나왔기 때문에 실패한 것이었다.

-> 이를 통해 '도'의 index를 따로 지정해주어 그 값이 -1인지 아닌지에 따라('도'의 유무) 조건문으로 함수를 나눠주기로 하였다.

// Assignment - 다음 함수 안에 코드를 구현하세요
function sliceCityFromAddress(address) {
  // your code here
  let length = address.length;
  let siIndex = address.indexOf('시'); 
  let doIndex = address.indexOf('도'); 
  if (doIndex!==-1)
  {
    let newAddress = address.slice(0,doIndex+1)+address.slice(siIndex+1)
    return newAddress;
  }
  else {
    let newAddress = address.slice(siIndex+2)
    return newAddress;
  }
}

module.exports = {sliceCityFromAddress}
profile
지속적으로 성장하고 발전하는 진취적인 태도를 가진 개발자의 삶을 추구합니다.

0개의 댓글