내장 객체
는 자바스크립트에 기본적으로 탑재되어 있는 객체입니다. 내장 객체
는 따로 인스턴스화 과정을 거칠 필요가 없다는 특징이 있습니다.
래퍼 객체
는 내장 객체 중에서도 문자열을 다루는 String, 숫자를 다루는 Number, 논리형을 다루는 Boolean 객체를 래퍼 객체
라고 합니다. 그 이름처럼 감싼다라는 의미를 갖는데요. 왜 이런 이름이 붙었냐면, 일반적인 데이터 값인 문자열, 숫자, 논리값을 감싸서 객체처럼 이용할 수 있게 하기 때문입니다.
래퍼 객체
는 자바스크립트가 해당 데이터형을 자동으로 객체와 호환시켜주기 때문에 프로그래머는 따로 코드 기술없이 바로바로 객체처럼 이용할 수 있습니다.
String 객체
는 문자열을 다루기 위한 객체입니다.
indexOf(찾을_문자(열), [시작_인덱스])
lastIndexOf(찾을_문자(열), [시작_인덱스])
indexOf
와 lastIndexOf
는 문자열에서 특정 문자를 찾는 메소드입니다. indexOf
는 문자열의 시작 부분에서 시작하여 왼쪽에서 오른쪽 방향으로 탐색을 진행하고, lastIndexOf
는 문자열의 끝 부분부터 시작해 오른쪽에서 왼쪽 방향으로 탐색을 진행합니다. 만약 두 번째 인수로 시작 인덱스를 전달하면 해당 인덱스부터 탐색을 진행합니다.
두 메소드는 찾을 문자를 찾게되면 해당 문자가 위치한 인덱스를 반환합니다. 만약 문자열에 찾을 문자가 여러개 포함되어있다면, 가장 먼저 등장한 문자의 인덱스를 반환합니다.
찾을 문자가 존재하지 않는 경우에는 -1
을 반환합니다.
이 외에도 찾을 문자를, 문자열로도 지정이 가능한데, 이 경우 일치하는 단어의 첫 글자 인덱스를 반환하게 됩니다.
let str = '자바스크립트 자바스크립트';
console.log(str);
console.log(str.indexOf('바'));
console.log(str.lastIndexOf('바'));
startsWith(찾을_문자(열), [시작_인덱스])
endsWith(찾을_문자(열), [시작_인덱스])
startWith
과 endsWitch
은 문자열이 찾을 문자로 시작하는지, 종료되는지에 대한 결과를 반환합니다. 따라서 찾을 문자로 시작하거나 종료되면 true를, 그렇지 않으면 false를 반환하게됩니다.
let str = '자바스크립트 자바스크립트';
console.log(str.startsWith('자'));
console.log(str.endsWith('바'));
includes(찾을_문자(열))
includes
는 문자열에서 찾는 문자가 포함되어있는지 확인합니다. 포함되어있으면 true를 포함되지 않았다면 false를 반환합니다. 이때 엄격한 검사를 실행하므로 띄어쓰기, 대소문자 구별을 합니다.
let str = '자바스크립트 자바스크립트';
console.log(str.includes('트 자'));
console.log(str.includes('트자'));
charAt(인덱스)
charAt
은 지정한 인덱스 위치의 문자를 취득합니다.
substr(시작_인덱스, [추출_갯수])
substr
은 지정된 시작 인덱스 + 1 위치의 인덱스부터 문자를 하나씩 추출합니다. 이때 두번째 인수로 추출 갯수를 넣으면 해당 갯수만큼 인덱스를 추출합니다.
split(문자열, [분할_갯수])
split
은 문자열을 분할하는 메소드입니다. 인수로 지정된 문자열을 기준으로 분할해서 결과를 배열의 형태로 반환합니다. 다시말해 문자열로 ','
를 전달하면 쉼표를 기준으로 문자열이 분할되어 반환됩니다. 역시 두 번째 인수로 분할 수를 넣으면, 그 수 만큼만 분할합니다.
let str = '자바스크립트 자바스크립트';
console.log(str.split('스'));
let str = '자바스크립트 자바스크립트';
console.log(str.split('스', 2));
substring(시작_인덱스, [종료_인덱스]);
slice(시작_인덱스, [종료_인덱스]);
substring
과 slice
는 문자열을 분할하는 메소드입니다. 시작 인덱스부터 시작하여 끝까지 혹은 지정한 종료 인덱스까지 문자열을 잘라서 그 부분만 반환합니다.
이 두 메소드는 비슷해 보이지만 두 가지 큰 차이점이 있습니다. 차이점을 확인해보시고, 필요한 용도에 맞게 활용하시면 됩니다.
우선, 시작 인덱스를 지정할 때 음수를 지정하는 경우입니다.
substring
에서 음수는 무조건 0으로 인식됩니다. 반면 slice
는 음수를 마지막 인덱스 부터 세는 것으로 인식합니다. 예를들어 -2라면, 마지막 인덱스로부터 2개 이전의 인덱스 값을 갖게됩니다. 말로하면 복잡하니 아래 예제 코드를 확인해보겠습니다.
let str = '자바스크립트';
console.log(str.substring(-2, 4));
//문자열 인덱스 0부터 3까지 추출
console.log(str.slice(2, -2));
.//문자열 인덱스 2부터 3까지 추출
두 번째 차이점은 시작 인덱스와 종료 인덱스 지정시에 시작 인덱스가 종료 인덱스보다 작은 경우 입니다.
substring
은 내부적으로 더 작은 수를 시작 인덱스로 인식하고 동작합니다. 그래서 substring(2, 4)
이던 substring(4, 2)
던 동일하게 동작합니다. 반면 slice
는 이러한 처리 없이 공백 문자열을 반환합니다. 왜냐하면 자를 위치에 아무것도 없기 때문이죠.
let str = '자바스크립트';
console.log(str.substring(2, 0)); //(0, 2)로 교환
console.log(str.slice(2, 1));
console.log(str.substring(2, -4));
//substring에서 음수는 0으로 교환되는데 이 법칙이 다시 적용되서 (0, 2)와 같아짐
정규 표현
은 문자열 내에 특정한 패턴이 있는 문자열(이메일이나 웹 페이지 주소 등)을 표현하는 방법입니다. 내장 객체중에 정규 표현을 다루는 객체가 따로 존재하므로 더 자세한 것은 그때 다루기로 하고, 지금은 String 객체의 정규 표현 문자열을 처리하는 메소드들을 알아보겠습니다.
match(reg)
match
는 정규 표현 reg로 문자열을 검색합니다. reg와 일치하는 문자열이 존재하면, 해당 부분의 문자열을 반환합니다.
replace(reg, str)
replace
는 정규 표현으로 검색하고 해당 부분은 문자열 str로 교체해줍니다.
search(reg)
search
는 match와 비슷한데, 검색을 수행하는 것까진 일치하나 일치하는 부분의 첫 번째 문자의 위치(인덱스)를 반환합니다.
toLowerCase()
toUpperCase()
toLowerCase
는 영어 소문자, 대문자를 소문자로, toUpperCase
는 영어 소문자, 대문자를 대문자로 치환해줍니다.
charCodeAt(n)
charCodeAt
은 문자열에서 n+1 번 위치의 문자를 Latin-1 코드
로 변환해줍니다. Latin-1 코드에 대해서는 링크를 참조해주세요.
fromCharCode(c1, c2, ...)
fromCharAt
는 Latin-1 코드를 인수로 전달하여, 문자로 변환해주는 메소드입니다.
codePointAt(n)
codePointAt
은 문자열의 n+1 번 위치의 문자를 utf-16으로 인코딩된 코드 포인트 값
으로 변환해줍니다. 코드 포인트
는 유니코드를 나타내기 위해 사용하는 값입니다. 유니코드는 한글 등과 같이 영어 외의 문자들을 나타내기 위한 문자 코드의 집합입니다.
fromCodePoint(n1, n2, ...);
이 메소드는 코드 포인트 값으로 부터 문자를 얻는 메소드입니다.
문자열.concat(str)
concat
은 문자열을 이어붙이는 메소드입니다. 인수로 지정한 str 문자열이 뒤에 붙게됩니다.
let str = '자바';
console.log(str.concat('스크립트'));
repeat(n)
repeat
는 문자열을 인수 n번 만큼 반복한 문자열을 반환합니다.
let str = '자바스크립트';
console.log(str.repeat(2));
trim()
trim
은 문자열의 전후에서 공백을 제거합니다.
let str = ' 자바스크립트';
console.log(str);
console.log(str.trim());
문자열.length
length
프로퍼티는 문자열의 길이를 반환합니다. 한글 단어도 한 글자씩 세어서 반환합니다.
let str = '자바스크립트';
console.log(str);
console.log(str.length);