Nota: se você estiver com pressa e / ou estiver procurando uma resposta curta, role até a parte inferior da resposta e leia as duas últimas linhas.se não estiver com pressa, leia tudo.
deixe-me começar declarando os fatos:
Sintaxe:
string.slice(start,end)
string.substr(start,length)
string.substring(start,end)
Nota 1:slice()==substring()
O que faz?
O slice()
método extrai partes de uma sequência e retorna as partes extraídas em uma nova sequência.
O substr()
método extrai partes de uma sequência, iniciando no caractere na posição especificada e retorna o número especificado de caracteres.
O substring()
método extrai partes de uma sequência e retorna as partes extraídas em uma nova sequência.
Nota 2:slice()==substring()
Muda a string original?
slice()
Não
substr()
faz Não
substring()
faz não
nota # 3:slice()==substring()
Usando números negativos como argumento:
slice()
seleciona caracteres iniciando no final da seqüência de
substr()
caracteres seleciona caracteres iniciando no final da seqüência de caracteres
substring()
Não executa
Nota # 3:slice()==substr()
se o primeiro argumento for maior que o segundo:
slice()
não for executado,
substr()
pois o segundo argumento NÃO é uma posição, mas o valor de comprimento, ele será executado normalmente, sem problemas
substring()
, os dois argumentos serão trocados e serão executados normalmente.
o primeiro argumento:
slice()
obrigatório indica: Índice inicial
substr()
obrigatório, indica: Índice inicial
substring()
obrigatório, indica: Índice inicial
Nota # 4:slice()==substr()==substring()
o Segundo Argumento:
slice()
Opcional, A posição (até, mas não incluindo) onde finalizar a extração
substr()
Opcional, O número de caracteres a serem extraídos
substring()
Opcional, A posição (até, mas não incluindo) onde finalizar a extração
Nota # 5:slice()==substring()
E se o segundo argumento for omitido?
slice()
seleciona todos os caracteres da posição inicial até o final da sequência
substr()
seleciona todos os caracteres da posição inicial até o final da sequência
substring()
seleciona todos os caracteres da posição inicial até o final da sequência
Nota # 6:slice()==substr()==substring()
então, você pode dizer que há uma diferença entre slice()
e substr()
, enquanto substring()
é basicamente uma cópia de slice()
.
Resumo:
se você souber o índice (a posição) em que irá parar (mas NÃO incluir), use slice()
se souber o tamanho dos caracteres a serem extraídos substr()
.
slice
é aquele com o comportamento menos inesperado.