/ JAVASCRIPT

그렇게 중요해보이지 않는 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가 있다면 실행
}

대상 문자열에서 인수로 전달받은 정규 표현식과 매치하는 문자열을 검색하여 일치하는 인덱스를 반환하며 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()이 있다.