let myString = 'Hi Codeit';
//부분 문자열 접근 slice(start, end)
console.log(myString.slice(0, 2)); // Hi
console.log(myString.slice(3)); // end parameter를 생략시 시작점부터 끝까지 가져옴 : Codeit
console.log(myString.slice()); // 모두 생략시 문자열 전체를 가져옴 : Hi Codeit
//양 끝 공백 제거
console.log(myString.trim()); // trim method
//대소문자 변환
console.log(myString.toUpperCase()); // 대문자 : HI CODEIT
console.log(myString.toLowerCase()); // 소문자 : hi codeit
//요소탐색
console.log(myString.indexOf('i')); // 앞부터 결과 : 1
console.log(myString.lastIndexOf('i')); // 뒤부터 결과 : 7
//문자열에 없는 문자 찾을 경우는 -1 출력
//요소접근
console.log(myString[3]); // 대괄호 표기법 결과 : C
console.log(myString.charAt(3)); // charAt 메소드 결과 : C
//문자열 길이
console.log(myString.length); // length property 결과 : 9
문자열도 객체처럼 다룰 수 있으며 배열과 비슷한 부분이 많다.
let myString = 'Hyunji';
for (let name of myString) {
console.log(name);
}
/*
H
y
u
n
j
i
*/
let myString = 'Hyunji';
let myArray = ['H', 'y', 'u', 'n', 'j', 'i'];
console.log(typeof myString); // string
console.log(typeof myArray); // object
let myString = 'Hyunji';
let myArray = ['H', 'y', 'u', 'n', 'j', 'i'];
console.log(myString === myArray); // false
console.log(myString == myArray); // false
가장 중요한 차이는 배열은 'mutable(바뀔 수 있는)' 자료형인 반면 문자열은 'immutable(바뀔 수 없는)' 자료형이다.
배열은 요소에 접근해서 할당연산자를 통해 요소를 수정할 수 있었으나 문자열은 한 번 할당된 값을 수정할 수 없다. 변수에 할당된 문자열을 바꾸고 싶다면, 일부를 바꾸는 게 아니라 새로운 문자열을 지정해주어야 한다.
// 배열은 mutable
let myArray = ['C', 'o', 'd', 'e', 'i', 't'];
myArray[0] = 'B';
console.log(myArray);
// 문자열은 immutable
let myString = 'Codeit';
myString[0] = 'B';
console.log(myString);
문자열이 가진 method들은 모두 return 값들을 활용하고, 본래의 문자열 값을 수정하지 않는다. 때문에 splice와 같은 method들은 사용하지 못한다.
너무 좋은 글이네요. 공유해주셔서 감사합니다.