let info = "JavaScript는 프로래밍 언어이다.";
let firstChar = info.indexOf("프로래밍");
// indexOf 메소드는 문자열을 확인하고 해당 문자열이 몇번째 순서에 있는지 알려줌.
// 해당 문자열이 없다면 -1을 반환 함.
console.log(info, firstChar); // 12를 반환 함.
if (firstChar !== -1) {
info = info.slice(0, firstChar) + "프로그래밍" + info.slice(firstChar+4, info.length)
}
//여기서 info.slice(firstChar+4, info.length) => 프로래밍+4 부터 info 의 마지막까지 자른다는 뜻.
console.log(info);
//"JavaScript는 프로그래밍 언어이다." 를 반환 함.
sliceCityFromAddress 함수는 address 를 인자로 받습니다.
address 는 주소를 나타내는 string 입니다.
주어진 주소가 어느 도시 인지를 찾아 해당 주소에서 도시 부분만 삭제한 새로운 주소를 리턴해 주세요.
도시는 무조건 "시" 로 끝납니다. 예를 들어, "서울시".
"도" 와 "시" 는 주소에 한번 밖에 포함되어 있지 않습니다.
예를 들어, 다음과 같은 주소가 주어졌다면;
"경기도 성남시 분당구 중앙공원로 53"
다음과 같은 값이 리턴되어야 합니다.
"경기도 분당구 중앙공원로 53"
function sliceCityFromAddress(address) {
let result = address.indexOf("도");
let result1 = address.indexOf("시")
for(let i = 0; i < address.length; i++){
if(result !== -1){
return address.slice(0,result-2) + address.slice(result+2,address.length)
}else if(result1 !== -1){
return address.slice(0,result1-2) + address.slice(result1+2,address.length)
}else {
return address;
}
}
};
여기서 문제는 "성남시 분당구 중앙공원로 53" 이 반환된다는 점이였다..
if 문에서 "도" 를 먼저 찾고 값이 true기 때문에 첫번째에서 멈추고 경기도를 지워준 것 같다..?
function sliceCityFromAddress(address){
let result = address.indexOf("도");
let result1 = address.indexOf("시");
//가정을 여러번 해준다. 도,시 가 둘 다 있을수도, 하나만 있을 수 도 있다.
if(result !== -1 && result1 !== -1){
// "도","시" 둘 다 있을때.
return address.slice(0,result+1) + address.slice(result1+1)
//"시"를 없애준다.
}else if(result == -1 && result1 !== -1){
//"도" 만 있을때
return address.slice(result1+2);
}else if(result !== -1 && result1 == -1){
//"시" 만 있을때
return address.slice(result+2);
}else{
//둘 다 없을때
return addres;
}
}
slice 메서드도 잘못 이해하고 있었다.
숫자가 들어가는 문제는 내 머리에선 많이 어려운 것 같다.
코드들을 많이 보면서 컴퓨팅사고를 더 키워야겠다...