Mutable
혹은 Immutable
한지 구분할 수 있다.forEach
, filter
, map
, reduce
, slice
등의 메서드를 이용해 배열을 원하는 형태로 만들 수 있다.callback
에 대해 이해할 수 있다.문자열의 문자는 배열에 접근하는 것처럼 인덱스를 통해 읽을 수 있다. 인덱스가 벗어나면 undefined
를 반환한다.
let str = 'CodeStates';
console.log(str[0]); // 'C'
console.log(str[3]); // 'e'
console.log(str[str.length - 1]); // 's'
console.log(str[10]); // undefined
length
프로퍼티는 문자열의 전체 길이를 반환한다. 그러므로 전체 길이 - 1
은 맨 마지막 인덱스가 된다.
문자열은 read-only
이므로 인덱스 접근을 통해 값을 수정할 수 없다. 수정하려면 새로운 string
을 할당해야 한다.
str[0] = 'G'
console.log(str); // 'CodeStates'
str = 'newString'
console.log(str); // 'newString'
+
연산자 또는 concat()
메서드를 이용해 여러 문자열을 합칠 수 있다. 만약 number
, boolean
등과 같은 다른 타입의 값과 합치면 string
으로 자동 형변환하고 합쳐진다.
const str1 = 'Code';
const str2 = 'State';
console.log(str1 + str2); // 'CodeState'
console.log(str1 + 0); // 'Code0'
console.log(str1.concat(str2)); // 'CodeState'
문자열 메서드는 모두 immutable
하다. 호출된 메서드가 원본에 영향을 주지 않는다.
배열 메서드에서는 immutable
과 mutable
이 구분되어 있기 때문에 주의하여야 한다.
문자열에서 특정 문자나 문자열을 찾고 싶을 때 사용한다.
'CodeStates'.indexOf('States'); // 4
'CodeStates'.indexOf('states'); // -1
'CodeStates'.indexOf('e'); // 3
lastIndexOf
메서드는 문자열의 뒤부터 시작한다.includes(searchValue)
도 비슷한 동작을 하지만 true 혹은 false를 반환한다.'CodeStates'.lastIndexOf('e'); // 8
'CodeStates'.includes('States'); // true
문자열을 구분 기호에 의해 분리하고 싶을 때 사용한다.
const str = 'Welcome to my velog!';
console.log(str.split(' ')); // ["Welcome", "to", "my", "velog!"]
csv(comma-separated values) 형식을 처리할 때 유용하다.
문자열에서 일부 문자열만 가져오고 싶을 때 사용한다.
const str = '123456789'
console.log(str.substring(0, 3)); // '123'
console.log(str.substring(3, 0)); // '123'
console.log(str.substring(-3, 3)); // '123'
console.log(str.substring(3)); // '456789'
console.log(str.substring(0, 100)); // '123456789'
console.log(str.substring()); // '123456789'
slice
도 같은 동작을 하지만, substring
과 달리 arguments로 음수를 받을 수 있다. 또한 시작이 끝보다 크면 빈 문자열을 반환한다.console.log(str.slice(-1)); // 9
console.log(str.slice(3, 0)); // ''
마지막 인덱스만 가져오고 싶을 때 유용하다.
문자열의 영문자를 모두 소문자 혹은 대문자로 바꾸고 싶을 때 사용한다.
console.log('CodeStates'.toLowerCase()); // 'codestates'
console.log('CodeStates'.toUpperCase()); // 'CODESTATES'
문자열의 양 끝에 공백을 제거하고 싶을 때 사용한다.
const str = ' CodeStates ';
console.log(str.trim()); // 'CodeStates'
문자열의 시작 앞부분에 다른 문자열을 추가하고 싶을 때 사용한다.
'abc'.padStart(10); // " abc"
'abc'.padStart(10, 'foo'); // "foofoofabc"
'abc'.padStart(5, 'foo'); // "foabc"
'abc'.padStart(1); // "abc"
문자열의 끝 뒷부분에 다른 문자열을 추가하고 싶을 때 사용한다.
'abc'.padEnd(10); // "abc "
'abc'.padEnd(10, 'foo'); // "abcfoofoof"
'abc'.padEnd(5, 'foo'); // "abcfo"
'abc'.padEnd(1); // "abc"
문자열이 정규식과 매치되는 부분을 검색하고 싶을 때 사용한다.
new RegExp(객체)
로 생성한 정규식을 암묵적으로 전달한다.문자열의 일부분을 대체하고 싶을 때 사용한다.
const str = 'The quick brown fox jumps over the lazy dog.'
console.log(str.replace('lazy', 'fat'));