표준 빌트인 객체인 String은 원시 타입인 문자열을 다룰 때 유용한 프로퍼티와 메서드를 제공한다.
기존에 string은 원시값이다. 원시 값은 객체가 아닌 값처럼 간주되는데 new 연산자와 함께 호출할 경우 해당 원시값을 활용한 프로퍼티와 메서드를 제공할 수 있는 래퍼 객체를 생성한다.
그 중 String 객체는 인자로 주어진 문자열을 순서대로, 인덱스를 나타내는 숫자는 프로퍼티 키로, 각 문자는 프로퍼티 값으로 가지는 String 래퍼 객체를 생성한다.
const strObj = new String('Lee');
console.log(strObj);
/* String {
0 : "L",
1 : "e",
2 : "e",
length : 3,
}*/
length 프로퍼티는 문자열의 문자 개수를 반환해 준다.
'Hello".length // 5
'안녕하세요!'.length// 6
String 객체는 유사 배열 객체이다. 각 문자를 인덱스로 접근할 수 있고 배열과 마찬가지로 length 프로퍼티를 갖고 있다.
이제부터 나오는 것들은 모두 메서드이다.
대상문자열에서 인수로 전달받은 문자 혹 문자열을 찾아낸 뒤 해당하는 첫번째 인덱스를 반환한다.
2번째 인수로 검색을 시작할 인덱스를 결정할 수도 있다.
str.indexof('l', 3); // -> 3
또한 대상 문자열에 특정 문자열이 존재하는지 확인할 때 유용하다.
if(str.indexOf('Hello')) {
// 문자열 str에 'Hello'가 포함되어 있는 경우에만 처리할 내용
}
대상 문자열에서 인수로 전달받은 정규 표현식과 매치하는 문자열을 검색하여 일치하는 문자열의 인덱스를 반환해준다. 검색에 실패하면 -1을 반환한다.
대상 문자열에서 인수로 전달받은 문자열이 포함되어 있는지 확인하여 그 결과를 true 또는 false 로 반환한다.
includes 메서드도 indexof 메서드처럼 2번째 인수로 검색을 시작할 인덱스를 지정해줄 수 있다.
대상 문자열이 인수로 전달받은 문자열로 시작하는지 확인하여 그 결과를 true 또는 false로 반환한다.
해당 메서드 또한 2번째 인수로 검색을 시작할 인덱스를 지정해줄 수 있다.
예시 코드는 생략하겠다.
이번에는 대상 문자열이 인수로 전달받은 문자열로 끝나는지 확인해주는 메서드이다. 동일하게 true 또는 false로 반환한다.
대상 문자열에서 인수로 전달받은 인덱스에 위치한 문자를 검색하여 반환한다.
charAt()안에 넣을 인수, 즉 인덱스는 "문자열의 길이 - 1" 보다 높은 숫자여서는 안된다. 만약 그렇게 한다면 빈 문자열을 반환한다.
대상 문자열에서 첫 번째 인수로 전달받은 인덱스에 위치하는 문자부터, 두 번째 인수로 전달받은 인덱스에 위치하는 문자의 바로 이전 문자까지의 문자열을 반환한다.
(⛔️주의하자 바로 이전 문자열이다!!)
만약 두번째 인수를 생략할 경우, 첫 번째 인수로 전달한 인덱스에 위치하는 문자부터 마지막 문자까지 모두 반환한다.
substring 메서드와 동일하게 동작한다. 단, slice 메서드에서는 음수인 인수를 전달할 수 있다.(substring에서는 0으로 치환된다.) 음수인 인수를 전달할 경우 문자열의 가장 뒤에서부터 시작하여 문자열을 잘라낸다.
똑같이 인수로 -5를 넣었더니, substring은 인수를 0으로 취급하여 0부터 문자열 끝까지 반환하지만 slice는 마지막~5인덱스까지만 잘라내어 world를 반환하는 모습이다.
대상 문자열을 모두 대문자로 변경한 문자열을 반환한다.
이번에는 대상 문자열을 모두 소문자로 변경한 문자열을 반환한다.
대상 문자열의 앞 뒤에 공백이 있을 경우 이를 제거한 문자열을 반환한다.
대상 문자열을 인수로 전달받은 정수만큼 반복해 연결한 새로운 문자열을 반환한다. 인수가 0일 경우, 반복을 안하는 것이 아니라 아예 빈 문자열을 반환하고, 음수이면 RangeError를 발생시키낟. 인수를 아예 안 넣을 경우 기본값 0이 설정돼 빈 문자열을 반환한다.
대상 문자열에서 첫 번째 인수로 전달받은 문자열 또는 정규표현식을 검색하여 두 번째 인수로 전달한 문자열로 치환한 문자열을 반환한다.
만약 대상 문자열에 검색하고자 하는 첫번째 인수의 문자열이 여러개일 경우, 첫 번째로 검색된 문자열만 치환한다.
대상 문자열에서 첫 번째 인수로 전달한 문자열 또는 정규 표현식을 검색하여 문자열을 구분한 후 분리된 각 문자열로 이루어진 배열을 반환한다. 인수로 빈 문자열을 전달하면 각 문자를 모두 분리하고, 인수를 생략하면 대상 문자열을 단일 요소로 하는 배열을 반환한다.
split 메서드는 배열을 반환하기에 아래처럼 배열 메서드를 체이닝해서 쓸 수 있다.
function reverseString(str) { return str.split(').reverse().join('); } reverseString('Hello world!'); // '!dlrow olleH'