그렇게 중요해보이지 않는 String(1)
STRING
length 프로퍼티
length 프로퍼티는 문자열의 문자 개수를 반환한다.
'Hello'.length; // -> 5
위처럼 배열과 마찬가지로 length 프로퍼티를 갖고 인덱스를 나타내는 숫자를 프로퍼티 키로 가지며 각 문자를 프로퍼티 값으로 가지므로 String객체는 유사배열 객체다.
.indexOf()
const str = 'Hello World';
str.indexOf('l'); // -> 2
//'l'을 검색하여 첫번째 인덱스를 반환
만약 검색에 실패한다면 -1을 반환한다.
또한 2번째 인수로 검색을 시작할 인덱스를 전달할 수 있다.
str.indexOf('l', 3); // -> 3
//3번째 인덱스부터 'l'를 검색한다
보통 indexOf()는 대상 문자열에 특정 문자열이 존재하는지 확인할때 유용한데 아래처럼 사용할 수 있다.
if(str.indexOf('world') !== -1){
//대상 문자열에 world가 있다면 실행
}
위의 방법도 유용하지만 ES6에서 도입된 곧 알아볼 includes 메서드가 가독성이 더 좋다고 한다.
if(str.includes('world')){
//대상 문자열에 world가 있다면 실행
}
.search()
대상 문자열에서 인수로 전달받은 정규 표현식과 매치하는 문자열을 검색하여 일치하는 인덱스를 반환하며 indexOf와 마찬가지로 검색되지 않으면 -1를 반환한다.
const str = "Hello World";
str.search(/o/); // -> 4
.inculdes()
앞서 말했듯 ES6에서 도입된 메서드이며 결과를 true 혹은 false로 반환한다. indexOf와 마찬가지로 2번째 인수로 검색을 시작할 인덱스를 전달할 수도있다.
str.includes('Hello'); // -> true
str.includes(' '); // -> true
str.includes('x'); // -> false
.startsWith()
이 메서드도 ES6에서 도입됐는데 대상 문자열이 인수로 전달받은 문자열로 시작하는지 확인하여 그 결과를 true 혹은 false로 반환한다.
str.startsWith('He'); // -> true
str.startsWith('he'); // -> false - 대소문자도 구분한다는것을 알수있다.
indexOf, includes와 마찬가지로 2번째 인수로 검색을 시작할 인덱스를 전달할 수 있다.
.endsWith()
startsWith()와 같은 메서드로 인수로 전달받은 문자열로 끝나는지 확인할 수 있다.
.charAt()
인수로 인덱스를 받아 그 인덱스에 위치한 문자를 검색하여 반환해준다.
const str = 'Hello';
str.charAt(1); // -> 'e'
인수의 범위는 문자열의 범위로 만약 그 범위를 벗어난 경우 빈 문자열(‘’) 을 반환한다.
비슷한 메서드로 .charCodeAt() 과 .codePointAt()이 있다.