String.prototype.slice()

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.

String 값의 slice() 메서드는 이 문자열의 일부를 추출하여 이를 새로운 문자열로 반환합니다. 원본 문자열은 수정하지 않습니다.

시도해보기

문법

js
slice(indexStart)
slice(indexStart, indexEnd)

매개변수

indexStart

반환될 부분 문자열에 포함될 첫 번째 문자의 인덱스.

indexEnd Optional

반환될 부분 문자열에서 제외될 첫 번째 문자열의 인덱스.

반환 값

문자열의 추출된 부분을 담는 새로운 문자열이 반환됩니다.

설명

slice()는 하나의 문자열로부터 텍스트를 추출하고 새 문자열을 반환합니다.

slice()indexEnd를 포함하지 않고 추출합니다. 예를 들어 str.slice(4, 8)는 다섯 번째 문자부터 여덟 번째 문자까지 추출합니다(인덱스 4, 5, 6, 7에 해당하는 문자).

              indexStart        indexEnd
                  ↓               ↓
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| T | h | e |   | m | i | r | r | o | r |

                  m   i   r   r
                 _______________
                      ↑
                    Result
  • indexStart >= str.length이라면, 빈 문자열이 반환됩니다.
  • indexStart < 0이라면, 문자열의 끝부터 인덱스를 셉니다. 보다 공식적으로 말하자면 이 경우, 하위 문자열은 max(indexStart + str.length, 0)에서 시작합니다.
  • indexStart가 생략되었거나 정의되지 않았거나 숫자로 변환할 수 없는 경우, 0으로 처리됩니다.
  • indexEnd가 생략되었거나 혹은 정의되지 않았거나 혹은 indexEnd >= str.length이면 slice()는 문자열 끝으로 추출합니다.
  • indexEnd < 0이면 문자열의 끝부터 인덱스를 셉니다. 보다 공식적으로 말하자면 이 경우, 하위 문자열은 max(indexEnd + str.length, 0)에서 끝납니다.
  • 음수 값을 정규화한 후 (즉, indexEndindexStart 앞에 있는 문자를 나타내는 경우) indexEnd <= indexStart인 경우 빈 문자열이 반환됩니다.

예제

slice()를 사용하여 새 문자열 생성하기

아래 예제는 새 문자열을 생성하기 위해 slice()를 사용합니다.

js
const str1 = "The morning is upon us."; // str1의 길이는 23입니다.
const str2 = str1.slice(1, 8);
const str3 = str1.slice(4, -2);
const str4 = str1.slice(12);
const str5 = str1.slice(30);
console.log(str2); // he morn
console.log(str3); // morning is upon u
console.log(str4); // is upon us.
console.log(str5); // ""

음수 인덱스로 slice() 사용하기

아래 예시는 slice()에 음수 인덱스를 사용합니다.

js
const str = "The morning is upon us.";
str.slice(-3); // 'us.'
str.slice(-3, -1); // 'us'
str.slice(0, -1); // 'The morning is upon us'
str.slice(4, -1); // 'morning is upon us'

아래의 예시는 시작 인덱스를 찾기 위해 문자열의 끝에서부터 역방향으로 11개를 세고 끝 인덱스를 찾기 위해 문자열의 시작에서부터 정방향으로 16개를 셉니다.

js
console.log(str.slice(-11, 16)); // "is u"

아래에서는 시작 인덱스를 찾기 위해 문자열의 처음부터 정방향으로 11개를 세고 끝 인덱스를 찾기 위해 끝에서부터 7개를 셉니다.

js
console.log(str.slice(11, -7)); // " is u"

이 인수는 끝에서부터 5로 역순으로 계산하여 시작 인덱스를 찾은 다음 끝에서부터 1을 거쳐 끝 인덱스를 찾습니다.

js
console.log(str.slice(-5, -1)); // "n us"

명세서

Specification
ECMAScript Language Specification
# sec-string.prototype.slice

브라우저 호환성

BCD tables only load in the browser

같이 보기