js substr substring slice 차이점

자바스크립트에는 문자열을 자르는 여러 함수들이 있다.

이 함수들을 비교해보자.

String.slice(beginIndex,endIndex)

beginIndex에서 endIndex 전까지의 부분 문자열을 반환한다.

beginIndex

beginIndex는 시작점이 0부터 시작하는 인덱스이다.
만약 음수라면 beginIndex는 String.length+beginIndex로 취급된다.

beginIndex가 String.length보다 크거나 같은 경우 빈 문자열을 반환한다.

endIndex

endIndex는 옵션값이며 0부터 시작하는 추출 종료점 인덱스로, 그 직전까지 추출된다 즉 인덱스 위치의 문자는 포함되지 않는다.

endIndex가 생략될경우 마지막 문자까지 추출하며, 마찬가지로 음수일 경우엔 String.length+endIndex로 취급된다.

1
2
3
4
5
let str = "안녕하세요.";
console.log(str.slice(0, 1)); //안
console.log(str.slice(0, 2)); //안녕
console.log(str.slice(-3)); //세요.
console.log(str.slice(-3, -2)); //세

String.substr(start,length)

바람직하지 않은 특징을 갖고있어 사용처가 없어지면 명세에서 제거될 함수라고 한다.

start에서 length만큼의 문자를 반환하는 함수이다.

start

start는 추출하고자 하는 문자들의 시작위치이다.

음수가 주어다면 문자열 총길이 + start 값으로 취급한다.

start가 양수이고 문자열 전체길이보다 크기가 같거나 클 경우 빈 문자열을 반환한다.

length

length는 옵션값으로 추출한 문자들의 길이이다.

length가 0 또는 음수일 경우 빈 문자열을 반환하며,

length가 생략되면 끝까지 추출하여 반환한다.

1
2
3
4
5
let str = "안녕하세요.";
console.log(str.substr(0, 1)); //안
console.log(str.substr(0, 2)); //안녕
console.log(str.substr(-3)); //세요.
console.log(str.substr(-3, -2)); //

String.substring(indexStart,indexEnd)

시작 인덱스부터 종료 인덱스 전까지 문자열의 부분 문자열을 반환한다.

indexStart

반환 문자열의 시작 인덱스이다.

0보다 작을 경우 0으로 String.length보다 클 경우 String.length로 취급된다. NaN값은 0으로 처리된다.

indexEnd

indexEnd는 옵션값이며, 반환 문자열의 마지막 인덱스이다.

indexEnd의 직전까지 추출한다. 즉 인덱스 위치의 문자는 포함되지 않는다.

indexEnd가 생략되었을 경우, 끝까지 모든 문자를 반환한다.

만약 indexStart와 같을 경우 빈 문자열을 반환한다.

indexStart보다 작을 경우 String.substring(indexEnd,indexStart)처럼 작동한다.

0보다 작을 경우 0으로 String.length보다 클 경우 String.length로 취급된다. NaN값은 0으로 처리된다.

1
2
3
4
5
6
let str = "안녕하세요.";
console.log(str.substring(0, 1)); //안
console.log(str.substring(1, 0)); //안
console.log(str.substring(0, 2)); //안녕
console.log(str.substring(-3)); //안녕하세요.
console.log(str.substring(-3, -2)); //

댓글