JS레플릿 19.String_10.19

송철진·2022년 10월 19일
0

Assignment

sliceCityFromAddress 함수는 address 를 인자로 받습니다.
address 는 주소를 나타내는 string 입니다.
주어진 주소에서 도시를 찾아 삭제하고 새로운 주소를 리턴해 주세요.
도시는 무조건 ‘시’로 끝납니다. 예) “서울특별시”, “성남시”
‘시’는 주소에 한번만 포함되어 있습니다.
예)
입력받은 주소:"경기도 성남시 분당구 중앙공원로 53"
리턴된 주소: "경기도 분당구 중앙공원로 53"

로직 생각해보기

  1. "시 "의 위치를 indexOf로 찾고 그값으로 기준을 잡는다
  2. 조건1. '-도'에 소속된 '-시'인 경우
    기준을 중심으로 왼쪽으로 위치를 이동하며 공백" "을 찾는다
    그리고 기준이 포함된 단어를 제외하고 / 그 앞문장, 뒷문장을 합쳐서 반환한다
  3. 조건2. 단독으로 '-시'인 경우
    기준을 중심으로 왼쪽으로 위치를 이동하며 공백이 없어 위치값이 0보다 작은 경우를 찾는다
    그리고 기준이 포함된 단어를 제외하고 / 그 뒷문장만 반환한다

결과

function sliceCityFromAddress(address) {
  let standard = address.indexOf("시 "); // 4
  let cutEnd; //첫번째 문장의 자를 끝부분

  for(let x=1; x<address.length-1; x++){  
    // "시 "위치부터 왼쪽으로 위치 이동하며 매칭되는 글자를 확인
    if(address.charAt(standard-x) === " "){ 
      // 해당 위치의 글자가 " "이라면
      cutEnd = standard-x; 
      // 첫번째 문장의 자를 끝부분에 그 위치를 할당합니다
      return address.slice(0, cutEnd) +" "+ address.slice(standard+2, address.length);
      // 첫문장과 마지막 문장을 합쳐서 반환합니다
    }else if(standard-x < 0){
      // 위치가 -1일 때
      return address.slice(standard+2, address.length);
      //"시 " 기준으로 뒷문장만 반환합니다
    } 
  }
}

let myAddress1 = "경기도 성남시 분당구 중앙공원로 53";
console.log(sliceCityFromAddress(myAddress1));
let myAddress2 = "서울특별시 강남구 테헤란로 427";
console.log(sliceCityFromAddress(myAddress2));

Today I Learn

  • charAt() : 숫자를 받아 숫자(위치)에 해당하는 '글자'를 반환하는 함수
let myString = "우리나라 만세";
console.log(myString.charAt(3));	// "라"
  • slice() : 텍스트를 잘라주는 함수

    • slice(잘릴 시작위치, 잘릴 끝위치)
    • 잘릴 끝위치의 문구는 포함하지 않습니다.
  • indexOf() : 문자열에 특정 문자열이 들어있는지 확인하고, 만약 있다면 몇번 째 순서에 해당 문자열이 있는지 알려 줍니다.

profile
검색하고 기록하며 학습하는 백엔드 개발자

0개의 댓글