Qual é a diferença entre
alert("abc".substr(0,2));
e
alert("abc".substring(0,2));
Ambos parecem produzir "ab".
javascript
substring
Diferença Engine
fonte
fonte
substring
supera todos os outros no Chrome ultimamente.slice
método,substring
não trata do ajuste para parâmetros negativos.substr
método e umsubstring
método"? Este é realmente o método preferido de sobrecarga?substr()
ser o que você pode chamar de "pseudo-obsoleto" na parte superior da página de documentos aqui: developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/… - Alguém tem mais informações sobre isso, por exemplo, existe algum navegador que esteja planejando se tornar obsoletosubstr()
em algum momento no futuro? Ou, como sugeriu Steven Lu, pode haver desvantagens de desempenho no usosubstr()
daqui para frente?Respostas:
A diferença está no segundo argumento. O segundo argumento para
substring
é o índice no qual parar (mas não inclui), mas o segundo argumentosubstr
é o comprimento máximo a ser retornado.Links?
https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/substr
https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/substring
fonte
String.prototype.substr()
está obsoleta ... (Está definida no Anexo B da norma ECMA-262, cuja introdução afirma: "… Os programadores não devem usar ou assumir o existência desses recursos e comportamentos ao escrever o novo código ECMAScript.… ")substring
( MDN ) assume parâmetros como(from, to)
.substr
( MDN ) assume parâmetros como(from, length)
.Atualização : o MDN considera
substr
legado.Você pode se lembrar dos
substring
índices, assim como outro método de extração de sequência, fatia .Ao iniciar a partir de 0, você pode usar qualquer um dos métodos.
fonte
.substring()
leva índices. Você pode se lembrar porque é o único com um 'i' no nome..slice()
leva índices também.Como sugerido na resposta de yatima2975, há uma diferença adicional:
substr()
aceita uma posição inicial negativa como um deslocamento do final da string.substring()
não.Do MDN :
Então, para resumir as diferenças funcionais:
substring(begin-offset, end-offset-exclusive)
onde o deslocamento inicial é0
ou maiorsubstr(begin-offset, length)
onde o deslocamento inicial também pode ser negativofonte
Outro problema que me deparei recentemente é que no IE 8,
"abcd".substr(-1)
retorna erroneamente"abcd"
, enquanto o Firefox 3.6 retorna"d"
como deveria.slice
funciona corretamente em ambos.Mais sobre este tópico pode ser encontrado aqui .
fonte
A principal diferença é que
substr () permite especificar o comprimento máximo a ser retornado
substring () permite especificar os índices e o segundo argumento NÃO é inclusivo
Existem algumas sutilezas adicionais entre substr () e substring (), como a manipulação de argumentos iguais e negativos. Observe também que substring () e slice () são semelhantes, mas nem sempre são os mesmos.
fonte
slice
:"string".slice(2,-2); // "ri"
A diferença é o segundo parâmetro. Seus segundos parâmetros, enquanto ambos os números, esperam duas coisas diferentes:
Ao usar substring, o segundo parâmetro é o primeiro índice a não incluir:
Ao usar substr, o segundo parâmetro é o número de caracteres a serem incluídos na substring:
fonte
A grande diferença é que
substr()
é um método descontinuado que ainda pode ser usado, mas deve ser usado com cautela, pois espera-se que sejam removidos totalmente em algum momento no futuro. Você deve trabalhar para remover o uso deles do seu código. E osubstring()
método foi bem-sucedido e especificou o anterior.fonte
substr()
? Eu li isso de várias pessoas, mas não consigo encontrar nenhuma informação na Web que suporte a declaração. Além disso, o Mozilla não o inclui na lista de recursos obsoletos / obsoletos: developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…String.prototype.substr()
é definido no Anexo B da norma ECMA-262, cuja introdução afirma: "… Os programadores não devem usar ou assumir a existência desses recursos e comportamentos ao escrever o novo código ECMAScript.…"substr()
é realmente considerado obsoleto em alguns documentos.Métodos Slice vs Substr vs Substring vs []
Há benefícios de desempenho para cada um desses métodos javascript. Por favor, use essas funções adequadamente.
fonte
substring (): Possui 2 parâmetros "start" e "end".
Se o parâmetro final não for especificado, todos os caracteres da posição inicial até o final da sequência serão extraídos.
Se o valor do parâmetro inicial for maior que o valor do parâmetro final, esse método trocará os dois argumentos. Isso significa que o início será usado como final e o fim será usado como início.
substr () : Possui 2 parâmetros "start" e "count".
O parâmetro start é necessário e especifica a posição onde iniciar a extração.
O parâmetro count é opcional e especifica o número de caracteres a serem extraídos.
Se o parâmetro count não for especificado, todos os caracteres da posição inicial até o final da string serão extraídos. Se count for 0 ou negativo, uma sequência vazia será retornada.
fonte
substring (startIndex, endIndex (não incluído))
substr (startIndex, quantos caracteres)
fonte