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.

Sumário

O método slice() extrai uma parte de uma string e a retorna como uma nova string, sem modificar a string original.

Experimente

const str = "The quick brown fox jumps over the lazy dog.";

console.log(str.slice(31));
// Expected output: "the lazy dog."

console.log(str.slice(4, 19));
// Expected output: "quick brown fox"

console.log(str.slice(-4));
// Expected output: "dog."

console.log(str.slice(-9, -5));
// Expected output: "lazy"

Sintaxe

str.slice(startIndex[, endIndex])

Paramêtros

startIndex

É o índice, de base zero, onde se inicia a extração. Se for um número negativo, será o mesmo que executar str.length + startIndex (por exemplo, se startIndex for -3, será o mesmo que executar str.length - 3).

js
const nome = "Ricardo";
console.log(nome.slice(-3)); // retorna 'rdo'

Se startIndex for maior ou igual a str.length, uma string vazia será retornada.

js
const nome = "Ricardo";
console.log(nome.slice(7)); // retorna <empty string>'
endIndex

Opcional. É o índice, de base zero, onde termina a extração. O caractere que possuir este índice não será incluso.

Se omitido ou possuir valor de undefined, ou for maior que str.length, slice() extrairá até o fim da string.

js
const nome = "Ricardo";

// omitindo fimSlice
console.log(nome.slice(0)); // retorna 'Ricardo'

// undefined fimSlice
let i; // variável criada sem atribuir valor
console.log(nome.slice(0, i)); // retorna 'Ricardo'

// passando número maior que o tamanho da string
console.log(nome.slice(0, 7)); // retorna 'Ricardo'

Se negativo, é o mesmo que executar str.length + endIndex onde str.length é o tamanho da string (por exemplo, se endIndex é -3, é como executar str.length - 3).

js
const nome = "Ricardo";
console.log(nome.slice(0, -3)); // retorna 'Rica'

Se for um valor diferente de indefinido e, ao mesmo tempo não for um número, uma string vazia será retornada

js
const nome = "Ricardo";
let i; // variável criada sem valor atribuído

// passando algum valor ≠ de undefined e ≠ de número
console.log(nome.slice(0, NaN)); // retorna <empty string>
console.log(nome.slice(2, false)); // retorna <empty string>
console.log(nome.slice(5, i)); // retorna 'Ricardo'

Se endIndex for definido e startIndex for negativo, endIndex deve ser negativo também, do contrário uma string vazia é retornada.

js
const nome = "Ricardo";
console.log(nome.slice(-3, 0)); // retorna <empty string>

Caso endIndex seja definido e startIndex e endIndex sejam ambos positivos ou negativos, endIndex deve ser maior que startIndex, do contrário uma string vazia é retornada.

js
const nome = "Ricado";
console.log(nome.slice(-1, -3)); // retorna <empty string>
console.log(nome.slice(3, 1)); // retorna <empty string>

Retorno

Uma nova string contento a porção extraída da string.

Descrição

slice() extrai um texto de uma string e retorna uma nova string. Modificações realizadas no texto de uma string não afetam a outra string.

slice() extrai até, mas não inclue endIndex.

str.slice(1, 4) extrai a partir do segundo caractere até o quarto caractere (ou seja, os caracteres de índices 1, 2, e 3).

Por exemplo, str.slice(2, -1) extrai a partir do terceiro carácter até o penúltimo caractere da string.

js
const nome = "Ricardo";
console.log(nome.slice(2, -1)); // retorna 'card'

Exemplos

Exemplo: Usando slice() para criar uma nova string

O exemplo a seguir usa slice() para criar uma nova string.

js
var str1 = "A manhã está sobre nós", // o tamanho de str1 é 22
  str2 = str1.slice(3, 10),
  str3 = str1.slice(2, -2),
  str4 = str1.slice(13),
  str5 = str1.slice(22);
console.log(str2); // retorna 'anhã es'
console.log(str3); // retorna 'manhã está sobre n'
console.log(str4); // retorna 'sobre nós'
console.log(str5); // retorna <empty string>

Exemplo: Usando slice() com índices negativos

O exemplo a seguir usa o slice() com índices negativos.

js
var str = "A manhã está sobre nós";
str.slice(-3); // retorna 'nós'
str.slice(-3, -1); // retorna 'nó'
str.slice(0, -1); // retorna 'A manhã está sobre nó'

O exemplo abaixo percorre o índice no sentido anti-horário (de trás para frente) até chegar ao índice 11 da string, que será o início. Logo após, percorre o índice da string no sentido horário até chegar ao índice 16 da string, que será o fim.

js
console.log(str.slice(-11, 16)); // retorna "á sob"

O exemplo abaixo percorre o índice no sentido horário até chegar ao índice 10 da string, que será o início. Logo após, percorre o índice da string no sentido anti-horário até chegar ao índice 7 da string, que será o fim.

js
console.log(str.slice(10, -7)); // retorna "tá so"

O exemplo abaixo percorre o índice no sentido anti-horário até chegar ao índice 5 da string, que será o início. Logo após, percorre o índice da string novamente no sentido anti-horário até chegar ao índice 1 da string, que será o fim.

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

Especificações

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

Compatibilidade com navegadores

Report problems with this compatibility data on GitHub
desktopmobileserver
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
Deno
Node.js
slice

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support

Veja também