JS repl.it 19. String

김형석·2022년 4월 28일
0

WECODE

목록 보기
9/33

Assignment

sliceCityFromAddress 함수를 구현해 주세요.

  • sliceCityFromAddress 함수는 address 를 인자로 받습니다.
  • address 는 주소를 나타내는 string 입니다.
  • 주어진 주소가 어느 도시 인지를 찾아 해당 주소에서 도시 부분만 삭제한 새로운 주소를 리턴해 주세요.
  • 도시는 무조건 "시" 로 끝납니다. 예를 들어, "서울시".
  • "도" 와 "시" 는 주소에 한번 밖에 포함되어 있지 않습니다.
  • 예를 들어, 다음과 같은 주소가 주어졌다면;
"경기도 성남시 분당구 중앙공원로 53"

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

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

내 코드

function sliceCityFromAddress(address) {
  let firstChar = address.indexOf("도")
  let secondChar = address.indexOf("시")
  if( firstChar !== -1 && secondChar !== -1){
    address = address.slice(0, (firstChar+1)) + address.slice( (secondChar+1), address.length )
    // console.log(address)
    return address;
  }else if( secondChar !== -1 ){
    address = address.slice(0, (firstChar+1)) + address.slice( (secondChar+2), address.length )
    // console.log(address)
    return address;
  }else{
    // console.log(address)
    return address;
  }
}

'도'와 '시'는 주소에 한번 밖에 포함되지 않는다고 하니 둘의 문자열을 찾아 변수에 넣어 보자

  let firstChar = address.indexOf("도")
  let secondChar = address.indexOf("시")

indexOf 메소드는 해당 문자열이 없다면 -1을 반환한다. 그것을 이용하여 둘 다 있을 경우, 하나만 있을 경우, 둘 다 없을 경우를 비교하여 문자열을 재구성하면 될듯하다.

둘 다 있을 경우를 비교 후 문자열을 재구성하자. 재구성을 위하여 slice()를 사용하였는데 마지막에 이 메소드는 마지막에 정리해보겠다.

 if( firstChar !== -1 && secondChar !== -1){
    address = address.slice(0, firstChar+1) + address.slice( secondChar+1 )
    //console.log(address)
    return address;
  }

slice 메소드를 이용하여 문자열의 0부터 firstChar(도)의 앞부분, secondChar(시)다음 문자열의 마지막까지 짤라서 더하면 된다. 그럼 중간에 들어 가 있는 ~~시만 삭제하여 새로운 주소를 리턴할 수 있다.

다음 '도'가 없고 '시'만 있는 경우를 보자

else if( secondChar !== -1 ){
    address = address.slice( secondChar+2 )
    // console.log(address)
    return address;
  }

그냥 secondChar의 뒤에부터 문자열을 짜른 후 리턴했다. +2는 띄어쓰기까지 빼기 위해서이다.

마지막 '도'는 있고 '시'가 없는 경우는 바로 리턴해주자

else{
    // console.log(address)
    return address;
  }

slice 메소드

텍스트를 잘라주는 함수이다.
slice( 잘릴 시작위치, 잘릴 끝위치)
잘릴 시작위치가 0이고, 끝위치가 12라면 slice메소드는 문구의 0부터 11번째 까지 잘라서 반환한다. 잘릴 끝위치의 문구는 포함하지 않는 것이다.

profile
블로그 이사 : https://hengxi.tistory.com

0개의 댓글