- 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( 잘릴 시작위치, 잘릴 끝위치)
잘릴 시작위치가 0이고, 끝위치가 12라면 slice메소드는 문구의 0부터 11번째 까지 잘라서 반환한다. 잘릴 끝위치의 문구는 포함하지 않는 것이다.