[Pre-course] String reple 문제

11774 단어 JavaScriptJavaScript

문자열 찾기

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는 프로그래밍 언어이다." 를 반환 함.

Assignment

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 메서드도 잘못 이해하고 있었다.
숫자가 들어가는 문제는 내 머리에선 많이 어려운 것 같다.
코드들을 많이 보면서 컴퓨팅사고를 더 키워야겠다...

좋은 웹페이지 즐겨찾기