-
[TIL] Today I Learned : Srting - sliceCityFromAddress함수프론트엔드 개발자가 될거야./js 2022. 6. 23. 17:37
String 함수 알아보기
알아서 대소문자를 바꿔주는 함수
String.toUpperCase();
이름에서 보면 알 수 있듯이 대문자로 바꿔준다.
String.toLowerCase();
또한 이름에서 보몀 알 수 있듯이 소문자로 바꿔준다.
let lastName = 'Yeri Kim'; let upperLastName = lastName.toUpperCase(); let lowerLastName = lastName.toLowerCase(); console.log(lastName); // Yeri Kim console.log(upperLastName); // YERI KIM console.log(lowerLastName); // yeri kim
문자 길이
배열의 길이는 length 라는 속성으로 알 수 있었는데
문자인 String형도 length 라는 속성으로 길이를 알 수 있다.
문자에 length속성을 사용하는 예시
회원가입을 받을 때 이름에 10자가 넘어갔는지 체크하거나,
한국의 핸드폰 번호는 무조건 10자 아니면 11자 이므로,
사용자가 값을 잘못 입력했는지 체크할 때 유용하게 사용한다.
주의사항
핸드폰 번호는 01012349876 으로, 항상 0으로 시작하는데
0으로 시작하는 숫자 표현식은 없다! (아이스크림 023개 주세요! 라고 하지는 않는 것 처럼)
그래서 핸드폰 번호는 숫자로 이루어져 있지만,
문자열로 관리해야 컴퓨터가 첫 숫자인 "0"도 갖고 있게 된다.
또한, Number형에는 length 라는 속성이 존재하지 않는다.
let phoneNumber = 01012349876; console.log(phoneNumber); //1012349876
let phoneNumber = "01012349876"; console.log(phoneNumber); // 01012349876 console.log(phoneNumber.length); // 11
문자열 찾기 - indexOf
indexOf 메소드
문자열에 특정 문자열이 들어있는지 확인하고 있다면 몇번째 순서에 해당 문자열이 있는지 알려주고
해당 문자열이 없다면 -1을 반환한다.
let info = "JavaScript는 프로래밍 언어이다."; let firstChar = info.indexOf("프로래밍"); console.log(info, firstChar); // JavaScript는 프로래밍 언어이다. 12
사용 예시로
댓글에 욕설이 포함되면 달지 못하도록 차단해준다.
문자열 잘라주기 - slice()
slice(잘릴 시작위치, 잘릴 끝위치)
텍스트를 잘라주는 함수이다.
잘릴 시작위치부터 잘릴 끝위치 전까지 잘라줘서 반환해준다.
주의해야 할 것은 잘릴 끝위치 문구는 포함하지 않고 그 직전까지만 포함한다는 것!!!
잘릴 끝위치가 안써있으면 끝까지 잘라준다고 생각하면 된다.
slice는 중요하니 아래 사이트 가서 더 공부하자.
https://www.w3schools.com/jsref/jsref_slice_string.asp
JavaScript String slice() Method
W3Schools offers free online tutorials, references and exercises in all the major languages of the web. Covering popular subjects like HTML, CSS, JavaScript, Python, SQL, Java, and many, many more.
www.w3schools.com
👀 문제 👀
그 후 sliceCityFromAddress 함수를 구현해 주세요.
- sliceCityFromAddress 함수는 address 를 인자로 받습니다.
- address 는 주소를 나타내는 string 입니다.
- 주어진 주소가 어느 도시 인지를 찾아 해당 주소에서 도시 부분만 삭제한 새로운 주소를 리턴해 주세요.
- 도시는 무조건 "시" 로 끝납니다. 예를 들어, "서울시".
- "도" 와 "시" 는 주소에 한번 밖에 포함되어 있지 않습니다.
- 예를 들어, 다음과 같은 주소가 주어졌다면
"경기도 성남시 분당구 중앙공원로 53"
다음과 같은 값이 리턴되어야 한다.
"경기도 분당구 중앙공원로 53"
💖 정답 💖
내가 푼 방법
function sliceCityFromAddress(address) { let num = address.indexOf("시"); // num = 6 let name = address.indexOf ("도"); // name = 2 if (num < 6) { address = address.slice(num+2,address.length); } else { address = address.slice(0, name+2) + address.slice(num+2,address.length); } return address; } console.log(sliceCityFromAddress("경기도 성남시 분당구 중앙공원로 53"));
처음에는
address = address.slice(0, name+2)
+ address.slice(num+2,address.length);이거밖에 생각을 못했었는데
자꾸 답이 안나와서 뭐지.. 하다가
'서울특별시 성북구 돈암동' 처럼
도가 없는 주소가 있다는 것을 알았다.
if (num < 6) {
address = address.slice(num+2,address.length);
}그래서 이렇게
서울특별시면 '시'가 무조건 6번째자리보단 앞에 있을거니까 (num < 6) 조건을 주고
'도'는 없을꺼니까 address = address.slice(num+2,address.length); 이렇게 한번만 잘라줬다.
익현님이 푼 방법 (감삼다 ^_^)
function sliceCityFromAddress(address) { let arr = Array.from(address.split(' ')) console.log(arr) let answer = []; arr = arr.filter(city => { if(city.includes('시') === false) { answer.push(city) } }) return answer.join(' ') }
'프론트엔드 개발자가 될거야. > js' 카테고리의 다른 글
[TIL] Today I Learned : 배열의 반복문 - .forEach() / .map() 차이 (0) 2022.06.24 [TIL] Today I Learned : 개념공부 - string <-> number 변환 / 날짜 객체 (0) 2022.06.23 [TIL] Today I Learned : 배열 요소 추가, 제거 - divideArrayInHalf 함수 (0) 2022.06.23 [TIL] Today I Learned : 수학표현식, 논리연산자, 가위 바위 보 게임 함수 만들기(rockPaperScissors 함수) (0) 2022.06.23 [TIL] Today I Learned : for문 - findSmallestElement 함수 (0) 2022.06.22