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}