문자열은 배열처럼 여러 함수를 사용해 다룰 수 있음
공백을 포함해 길이를 알려줌
대괄호 표기법으로도 가능하고, 특별히 charAt(n)을 통해서도 접근 가능
let myString = "Hello World!";
console.log(myString[4]); // o
console.log(myString.charAt(4)); // o
배열에서 쓸 수 있는 indexOf()와 lastIndexOf()도 사용 가능
let myString = "Hello World!";
console.log(myString.indexOf('o')); // 4
console.log(myString.lastIndexOf('o')); // 7
console.log(myString.lastIndexOf('a')); // -1 (없을 경우 -1)
indexOf를 이용해 인덱스를 찾을 때, 시작위치를 지정하고 싶다면? 두번째 파라미터로 시작위치를 전달하면됩니다!!
let str = "Hello world, welcome to the world of JavaScript."; console.log(str.indexOf('e')); // 1 console.log(str.indexOf('e', 11)); // 14 // 인덱스 11부터 찾아서 14번째 e가 나옴
let myString = "Hello World!";
console.log(myString.toUpperCase()); // HELLO WORLD!
console.log(myString.toLowerCase()); // hello world!
let myString = " Hello World! ";
console.log(myString.trim()); // Hello World! (양쪽 공백이 제거됨)
첫번째 파라미터만 작성하면 start부터 끝까지 가져오고, 모두 생략하면 전체를 다 가져옴
let myString = "Hello World!";
console.log(myString.slice(0,2)); // HE
console.log(myString.slice(6)); // World!
console.log(myString.slice()); // Hello World!
배열과 마찬가지로 문자열도 for..of문을 사용해서 요소에 접근할 수 있음
let myString = "Hello";
for (let str of myString) {
console.log(str);
}
// H
// e
// l
// l
// o
문자열과 배열의 차이
문자열과 배열이 비슷한 점이 많긴 하지만 아예 같진 않음
typeof를 이용해 자료형을 출력해봐도 문자열은 string, 배열은 object이며 "HELLO"와 ["H","E","L","L","O"]를 비교연산자로 비교해도 false 나옴
가장 중요한 차이는 배열은 'mutable(바뀔 수 있는)' 자료형인 반면 문자열은 'immutable(바뀔 수 없는)' 자료형이라는 것!
(배열은 요소에 접근해서 할당연산자를 통해 요소를 수정할 수 있지만 문자열은 한 번 할당된 값을 수정할 수 없음, 즉 일부를 바꾸는 게 아니라 새로운 문자열을 지정해주어야 함)
배열과 문자열에 대해서 다시 한번 되돌아보면, 문자열이 가진 메소드들은 모두 return 값들을 활용하고, 본래의 문자열 값을 수정하지 않음.
같은 의미에서 문자열에 splice 같은 메소드들은 사용할 수 없다는 것을 명심!