3. 문자열
지난 글에서는
자바스크립트에서는 숫자형을 객체로 다루었고
Math객체와 다양한 메소드들을 살펴보았다.
JavaScript 기초 : 자료형 업그레이드 2. Math 객체
문자열 또한 객체처럼 다룰 수 있다.
문자열은 배열과 비슷한 점이 많다.
length프로퍼티를 이용해서 문자열의 길이를 알 수 있고
배열에서 사용하는 index와 대괄호 표기법을 이용해
문자열의 글자 하나하나에 접근할 수 있다.
또한 index[] 와 같은 결과를 내기 위해
charAt이라는 메소드를 이용해서 문자열 글자 하나하나에 접근할 수 있다.
예시를 살펴보자.
//String
let myString = 'Hi Yunju';
//문자열 길이 length
console.log(myString.length);
//문자열 요소 접근
console.log(myString[3]);
console.log(myString.charAt(4));
이런 경우 문자열의 길이는
띄어쓰기를 포함하여
8
이 출력되며
문자열 요소는
Y
u
가 출력된다.
3-2. 문자열 요소 탐색
indexOf와 lastIndexOf를 이용하면
요소를 쉽게 찾을 수 있다.
indexOf는 앞부터lastIndexOf는 뒤부터 찾아서 index넘버를 알려준다.
//요소 탐색
let myString = 'Hi Yunju';
console.log(myString.indexOf('i'));
console.log(myString.lastIndexOf('j'));
위의 경우에는 i와 j 가 몇 번 인덱스인지 알려준다.
indexOf는 앞부터lastIndexOf는 뒤부터 찾아서 알려주는데
(뒤부터 찾아서 알려준다는 말은 똑같은 알파벳이 앞과 뒤에 있다면 뒤에 있는 알파벳 인덱스를 알려준다는 얘기다.)
결과적으로
1
6
이라고 나온다.
만약 없는 문자열의 인덱스를 찾는다면 -1이 나온다.
3-3. 대소문자 바꾸어주기
소문자→대문자 : toUpperCase
대문자→소문자: toLowerCase
를 사용해보자.
//String
let myString = 'Hi Yunju';
//대소문자 변환
console.log(myString.toUpperCase()); //대문자
console.log(myString.toLowerCase()); //소문자
이렇게 적으면 모든 대문자는 소문자로, 모든 소문자는 대문자로 바꾸어 준다~!
3-4. 문자열 사이 양 끝 공백을 지워주는 trim
trim은 문자열 사이의 양 끝 공백을 지워주는 역할을 한다.
//String
let myString =' Hi Yunju ';
//양 끝 공백 제거
console.log(myString.trim()); // 양 끝에 공백을 제거해줌.
이렇게 작성하면
H와 u 앞 뒤에 있는 공백을 지운 채
Hi Yunju
를 출력한다.
3-5. 부분 문자열 접근 slice(start, end)
slice는 시작과 끝 인덱스를 파라미터로 받아서
끝 인덱스 직전까지 부분 문자열을 가져올 수 있다.
두 번째 파라미터를 생략했다면 시작지점부터 끝까지 리턴하고
모든 파라미터를 생략했다면 모든 문자열을 리턴한다.
//String
let myString ='Hi Yunju';
//부분 문자열 접접근slice(start, end)
console.log(myString.slice(0,4));
console.log(myString.slice(3));
console.log(myString.slice());
결과는 어떻게 출력될까?
Hi Y
Yunju
Hi Yunju
이렇게 출력된다~!
3-6. for ... of 사용해보기
for of를 사용하면 글자 요소 하나하나를 변수로 받아서 출력해준다.
//for...of 사용해보기
let myString = 'JoYunju';
for (let str of myString) {
console.log(str);
}
결과 값은 어떻게 나올까?
J
o
Y
u
n
j
u
이렇게 출력된다!
3-7. 배열과 문자열의 다른 점!
일단
문자열은 typeof연산자로 확인하면 string이 나오고
배열은 object가 나온다.
또한
동등비교로 불린 값을 확인해도
false가 출력된다.
제일 큰 차이점은!
배열은 mutable(바뀔 수 있는) 자료형이고
문자열은 immutable(바뀔 수 없는) 자료형이라는 것이다.
배열은 요소에 접근해서 할당 연산자를 통해 요소를 수정할 수 있다.
반면에 문자열은 수정할 수 없다.
만약 문자열의 요소를 바꾸고 싶다면 새로운 문자열을 지정해 주어야 한다!
예시를 살펴보자.
배열 myArray를 만들었고
문자열 myStirng 변수를 만들었다.
// 배열은 mutable
let myArray = ['Y', 'u', 'n', 'j', 'u', '!'];
myArray[5] = '?';
console.log(myArray);
// 문자열은 immutable
let myString = 'Yunju!';
myString[5] = '?';
console.log(myString);
결과 값을 확인해보자!
즉 위의 그림처럼 문자열은 수정을 해도 안바뀐다~!
문자열이 가진 메소드을 생각해보면 return 값들을 활용한 것이지, 본래의 문자열 값 자체를 수정하지는 않았다.
문자열에 splice를 사용할 수 없는 이유이기도 하다!
간단한 예시로 slice(sart, end) 메소드를 사용해보자.
3-8. 노래 가사 찾기 예시
그때 그 여름을 틀어줘
노래에서 비룡 부분의 가사를 찾아볼 것이다.
먼저 biryong 변수를 만들어주고
가사에서 [비룡] 이 부분과 [린다] 이 부분의 인덱스를 찾는다.
그리고 slice(start, end) 메서드를 이용해 가사를 출력해준다!
let lyrics = "[유두래곤]돈이 없었지 깡이 없었나 아 예예예예예 일이 없었지 감이 없었나 아 예예예예예[비룡]Youth- Flex- 이 계절을 아끼지 마요 밤새도록 Play 해줘 [린다] 그 때 그 여름을 틀어줘";
let biryong = null;
// 여기에 코드를 작성해 주세요.
let startIndex = lyrics.indexOf('[비룡]');
let endIndex = lyrics.indexOf('[린다]');
console.log(startIndex);
console.log(endIndex);
biryong = lyrics.slice(startIndex, endIndex);
console.log(biryong);
결과는
49
92
[비룡]Youth- Flex- 이 계절을 아끼지 마요 밤새도록 Play 해줘
이렇게 나온다!!!
코드를 짤 때 핵심은 indexOf를 이용해서 [비룡] 이 부분의 인덱스를 찾고
[린다] 부분의 인덱스를 찾은 뒤
slice의 startIndex와 endIndex에 넣어준다는 것이다.
간단하지만 생각해내기는 어렵다.
여러 예제들을 통해 slice를 연습해보는 것이 필요하다.
다음글에서는 기본형과 참조형에 대해 정리해보자~!
'프로그래밍 > Javascript' 카테고리의 다른 글
JavaScript 기초 : 실전 예제 1. 팩토리얼(factorial) - for 반복문 사용 (0) | 2020.09.17 |
---|---|
JavaScript 기초 : 자료형 업그레이드 4. 기본형과 참조형 (0) | 2020.09.15 |
JavaScript 기초 : 자료형 업그레이드 2. Math 객체 (0) | 2020.09.14 |
JavaScript 기초 : 배열 4. for ...of 반복문 (0) | 2020.09.10 |
JavaScript 기초 : 배열 3. 메서드 - indexOf, lasindexOf, includes, reverse 사용법 (0) | 2020.09.10 |