250x250
Recent Posts
Recent Comments
쑤쑤_CS 기록장
27. String 레퍼 객체 본문
728x90
String 객체
-
원시 타입인 문자열을 다룰 때 유용한 프로퍼티와 메소드를 제공하는 레퍼(wrapper) 객체이다.
-
문자열을 값으로 가지고 있다면 String 객체의 별도 생성없이 String 객체의 프로퍼티와 메소드를 사용할 수 있다.
-
원시 타입이 wrapper 객체의 메소드를 사용할 수 있는 이유는, 원시 타입으로 프로퍼티나 메소드를 호출할 때 원시 타입과 연관된 wrapper 객체로 일시적으로 변환되어 프로토타입 객체를 공유하게 되기 때문이다.
const str = 'Hello world!';
console.log(str.toUpperCase()); // 'HELLO WORLD!'
#1. String Constructor
-
String 객체는 String 생성자 함수를 통해 생성할 수 있다
-
전달된 인자는 모두 문자열로 변환된다.
-
new 연산자를 사용하지 않고 생성자 함수를 호출하면 객체가 아닌 문자열 리터럴을 반환한다. (이때 형 변환이 발생할 수 있다.)
- 일반적으로 문자열을 사용할 때는 원시 타입 문자열을 사용한다.
new String(value);
let strObj = new String('Lee');
console.log(strObj); // String {0: 'L', 1: 'e', 2: 'e', length: 3, [[PrimitiveValue]]: 'Lee'}
strObj = new String(1);
console.log(strObj); // String {0: '1', length: 1, [[PrimitiveValue]]: '1'}
strObj = new String(undefined);
console.log(strObj); // String {0: 'u', 1: 'n', 2: 'd', 3: 'e', 4: 'f', 5: 'i', 6: 'n', 7: 'e', 8: 'd', length: 9, [[PrimitiveValue]]: 'undefined'}
#2. String Property
#2.1 String.length
- 문자열 내의 문자 갯수를 반환
- String 객체는 length 프로퍼티를 갖고 있으므로 유사 배열 객체
const str1 = 'Hello';
console.log(str1.length); // 5
const str2 = '안녕하세요!';
console.log(str2.length); // 6
#3. String Method
String 객체의 모든 메소드는 새로운 문자열을 반환 (문자열은 변경불가능한 원시값이기 때문이다.)
#3.1 String.prototype.charAt(ops:number):string
-
인수로 전달한 index에 해당하는 위치의 문자를 반환
-
index는 0 ~ (문자열 길이 - 1) 사이의 정수이다.
- index가 범위를 벗어난 경우 빈문자열을 반환
const str = 'Hello';
console.log(str.charAt(0)); // H
console.log(str.charAt(1)); // e
console.log(str.charAt(2)); // l
console.log(str.charAt(3)); // l
console.log(str.charAt(4)); // o
// 지정한 index가 범위(0 ~ str.length-1)를 벗어난 경우 빈문자열을 반환한다.
console.log(str.charAt(5)); // ''
// 문자열 순회. 문자열은 length 프로퍼티를 갖는다.
for (let i = 0; i < str.length; i++) {
console.log(str.charAt(i));
}
// String 객체는 유사 배열 객체이므로 배열과 유사하게 접근할 수 있다.
for (let i = 0; i < str.length; i++) {
console.log(str[i]); // str['0']
}
#3.2 String.prototype.concat(...strings:string[]):string
- 인수로 전달한 1개 이상의 문자열과 연결하여 새로운 문자열을 반환
- concat보다는 + += 연산자가 성능상 유리
/**
* @param {...string} str - 연결할 문자열
* @return {string}
*/
str.concat(str1[,str2,...,strN])
console.log('Hello '.concat('Lee')); // Hello Lee
#3.3 String.prototype.indexOf(searchString:string, fromIndex=0):number
-
인수로 전달한 문자 또는 문자열을 대상 문자열에서 검색하여 처음 발견된 곳의 index를 반환
-
발견하지 못한 경우 -1을 반환
#3.4 String.prototype.lastIndexOf(searchString:string, fromIndex=this.length-1):number
-
인수로 전달한 문자 또는 문자열을 대상 문자열에서 검색하여 마지막으로 발견된 곳의 index를 반환
-
발견하지 못한 경우 -1을 반환
-
2번째 인수가 전달되면 시작위치를 인수 위치로 이동해서 역방향 검색
#3.5 String.prototype.replace(searchValue:string|RegExp, replaceValue:string|replacer:(substring:string,...args:any[])⇒string):string):string
- 첫번째 인수로 전달한 문자열을 두번째 인수로 전달한 문자열로 대체
- 원본 문자열은 변경되지 않고 결과가 반영된 새로운 문자열을 반환
- 여러개인 경우 첫번째 검색된 문자열만 대체
#3.6 String.prototype.split(separator: string | RegExp, limit?: number): string[]
- 첫번째 인수로 전달한 문자열을 대상 문자열에서 검색한 뒤 분리된 문자열로 이루어진 배열을 반환 ()
- 인수가 없는 경우, 대상 문자열 전체를 단일 요소로 하는 배열을 반환
- 원본 문자열은 변경 안됨
#3.7 String.prototype.substring(start: number, end=this.length): string
- start 인덱스부터 end 인덱스에 해당하는 문자의 바로 이전 문자까지 반환
- 첫번째 인수 < 두번째 인수 의 관계가 성립된다.
- 첫번째 인수 > 두번째 인수 : 두 인수는 교환된다.
- 두번째 인수가 생략된 경우 : 해당 문자열의 끝까지 반환한다.
- 인수 < 0 또는 NaN인 경우 : 0으로 취급된다.
- 인수 > 문자열의 길이(str.length) : 인수는 문자열의 길이(str.length)으로 취급된다.
#3.8 String.prototype.slice(start?: number, end?: number): string
-
String.prototype.substring과 동일
-
인수에 음수를 전달할 수 있다
#3.9 String.prototype.toLowerCase(): string
- 대상 문자열의 모든 문자를 소문자로 변경
#3.10 String.prototype.toUpperCase(): string
- 대상 문자열의 모든 문자를 대문자로 변경
#3.11 String.prototype.trim(): string
- 대상 문자열 양쪽 끝에 있는 공백 문자를 제거한 문자열을 반환
#3.12 String.prototype.repeat(count: number): string
- 인수로 전달한 숫자만큼 반복해 연결한 새로운 문자열을 반환
- count = 0 : 빈 문자열을 반환
- count < 0 : RangeError를 발생
#3.13 String.prototype.includes(searchString: string, position?: number): boolean
- 인수로 전달한 문자열이 포함되어 있는지를 검사
- 결과를 불리언 값으로 반환
- 두번째 인수는 옵션으로 검색할 위치를 나타내는 정수이다.
728x90
'IT 지식 기록 > JavaScript 정리' 카테고리의 다른 글
29. 자바스크립트 배열은 배열이 아니다 (0) | 2020.12.25 |
---|---|
28. 배열 (0) | 2020.12.25 |
26. 정규표현식 (0) | 2020.12.25 |
25. 날짜와 시간을 위한 Date 객체 (0) | 2020.12.24 |
24. 수학 상수와 함수를 위한 Math 객체 (0) | 2020.12.24 |
Comments