Esta tradução está incompleta. Por favor, ajude a traduzir este artigo.

 

O método substr() retorna os caracteres em uma string começando na localização especificada através do número especificado de caracteres.

str.substr(start[, length])

Parametros

start
Local para começar a extrair os caracteres. Se um número negativo é passado, é tratado como strLength - start onde strLength é o tamanho da string. Por exemplo, str.substr(-3) é tratado como str.substr(str.length - 3)
length
O número de caracteres a serem extraídos. Se esse argumento for undefined, todos os caracteres do start ao fim da string serão extraídos.

Valor de retorno

Uma nova string contendo a seção extraída da string fornecida. Se o length for 0 ou um número negativo, uma string vazia é retornada.

Descrição

start é um índice do caracter. O índice do primeiro caracter é 0, e o índice do último caracter é 1 inferior ao tamanho da string completa. substr().

O start é um índice de caractere. O índice do primeiro caractere é 0 e o índice do último caractere é 1 inferior ao comprimento da string completa. substr() começa a extrair caracteres no start e coleciona caracteres do length (a menos que ele atinja o final da string primeiro, nesse caso retornará menos).

Se start é positivo e for maior ou igual ao tamanho da string, substr() retornará uma string vazia.

Se start for negativo, substr() o usa como um índice de caracteres do final da string;
o índice do último caractere é -1. Se start for negativo e abs(start) for maior que o comprimento da string, substr() usa 0 como o índice de início. 
Observação: O processamento descrito dos valores negativos do argumento de start não é suportado pelo JScript da Microsoft.

Se length for 0 ou negativo, substr() retornará uma string vazia. Se length for omitido, substr() extrai caracteres para o final da string.

Exemplos

Using substr()

var str = 'abcdefghij';

console.log('(1, 2): '   + str.substr(1, 2));   // '(1, 2): bc'
console.log('(-3, 2): '  + str.substr(-3, 2));  // '(-3, 2): hi'
console.log('(-3): '     + str.substr(-3));     // '(-3): hij'
console.log('(1): '      + str.substr(1));      // '(1): bcdefghij'
console.log('(-20, 2): ' + str.substr(-20, 2)); // '(-20, 2): ab'
console.log('(20, 2): '  + str.substr(20, 2));  // '(20, 2): '

Polyfill

JScript da Microsoft não suporta valores negativos para o índice de início. Se você deseja usar esse recurso, você pode usar o seguinte código de compatibilidade para evitar esse erro:

// only run when the substr() function is broken
if ('ab'.substr(-1) != 'b') {
  /**
   *  Get the substring of a string
   *  @param  {integer}  start   where to start the substring
   *  @param  {integer}  length  how many characters to return
   *  @return {string}
   */
  String.prototype.substr = function(substr) {
    return function(start, length) {
      // call the original method
      return substr.call(this,
      	// did we get a negative start, calculate how much it is from the beginning of the string
        // adjust the start parameter for negative value
        start < 0 ? this.length + start : start,
        length)
    }
  }(String.prototype.substr);
}

Especificações

Specification Status Comment
ECMAScript 3rd Edition (ECMA-262) Padrão Defined in the (informative) Compatibility Annex B. Implemented in JavaScript 1.0.
ECMAScript 5.1 (ECMA-262)
The definition of 'String.prototype.substr' in that specification.
Padrão Defined in the (informative) Compatibility Annex B
ECMAScript 2015 (6th Edition, ECMA-262)
The definition of 'String.prototype.substr' in that specification.
Padrão Defined in the (normative) Annex B for Additional ECMAScript Features for Web Browsers
ECMAScript Latest Draft (ECMA-262)
The definition of 'String.prototype.substr' in that specification.
Padrão em tempo real Defined in the (normative) Annex B for Additional ECMAScript Features for Web Browsers

Browser compatibilidade

FeatureChromeEdgeFirefoxInternet ExplorerOperaSafari
Basic support Yes Yes Yes Yes Yes Yes
FeatureAndroid webviewChrome for AndroidEdge mobileFirefox for AndroidIE mobileOpera AndroidiOS Safari
Basic support Yes Yes Yes Yes Yes Yes Yes

Veja também

Etiquetas do documento e colaboradores

 Colaboradores desta página: marceloogeda
 Última atualização por: marceloogeda,