1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
|
---
title: String.prototype.substr()
slug: Web/JavaScript/Reference/Global_Objects/String/substr
tags:
- Descontinuado
- JavaScript
- Prototipo
- Referencia
- String
- metodo
- substr()
translation_of: Web/JavaScript/Reference/Global_Objects/String/substr
---
<div>{{JSRef}}</div>
<p>O método <code>substr()</code> retorna uma parte da string, começando no índice especificado e estendendo-se por um determinado número de caracteres posteriormente.</p>
<div>{{EmbedInteractiveExample("pages/js/string-substr.html")}}</div>
<h2 id="Sintaxe">Sintaxe</h2>
<pre class="syntaxbox notranslate"><var>str</var>.substr(<var>start</var>[, <var>length</var>])</pre>
<h3 id="Parâmetros">Parâmetros</h3>
<dl>
<dt><code>start</code></dt>
<dd>Local para começar a extrair os caracteres.</dd>
<dt><code>length</code></dt>
<dd>Opcional. O número de caracteres a serem extraídos.</dd>
</dl>
<h3 id="Valor_de_retorno">Valor de retorno</h3>
<p>Uma nova string contendo a seção extraída da string fornecida.</p>
<h2 id="Descrição">Descrição</h2>
<p>O <code>substr()</code> extrai caracteres de comprimento de uma <code>str</code>, contando a partir do índice inicial.</p>
<ul>
<li>Se o <code>start</code> for um número positivo, o índice começa a contar no início da string. Seu valor é limitado ao tamanho da string (<code>str.length</code>).</li>
<li>Se o <code>start</code> for um número negativo, o índice começa a contar a partir do final da string. Seu valor é limitado ao tamanho da string (<code>-str.length</code>).</li>
</ul>
<div class="blockIndicator note">
<p><strong>Nota</strong>: No Microsoft JScript, valores negativos no argumento <code>start</code> não são considerados como referência ao final da string.</p>
</div>
<ul>
<li>Se <code>length</code> for omitido, <code>substr()</code> extrairá caracteres até o final da string.</li>
<li>Se <code>length</code> for {{jsxref("undefined")}}, <code>substr()</code> extrai os caracteres até o final da string.</li>
<li>Se <code>length</code> for um número negativo, ele será tratado como <code>0</code>.</li>
<li>Para <code>start</code> e <code>length</code>, {{jsxref("NaN")}} é tratado como 0.</li>
</ul>
<h2 id="Exemplos">Exemplos</h2>
<h3 id="Usando_substr">Usando <code>substr()</code></h3>
<pre class="brush: js notranslate">var aString = 'Mozilla';
console.log(aString.substr(0, 1)); // 'M'
console.log(aString.substr(1, 0)); // ''
console.log(aString.substr(-1, 1)); // 'a'
console.log(aString.substr(1, -1)); // ''
console.log(aString.substr(-3)); // 'lla'
console.log(aString.substr(1)); // 'ozilla'
console.log(aString.substr(-20, 2)); // 'Mo'
console.log(aString.substr(20, 2)); // ''</pre>
<h2 id="Polyfill">Polyfill</h2>
<p>JScript da Microsoft não suporta valores negativos para o índice de <code>start</code>. Se você deseja usar esse recurso, você pode usar o seguinte código de compatibilidade para evitar esse erro:</p>
<pre class="brush: js notranslate">// 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);
}
</pre>
<h2 id="Especificações">Especificações</h2>
<table class="standard-table">
<tbody>
<tr>
<th scope="col">Specification</th>
<th scope="col">Status</th>
<th scope="col">Comment</th>
</tr>
<tr>
<td>{{SpecName('ES3')}}</td>
<td>{{Spec2('ES3')}}</td>
<td>Defined in the (informative) Compatibility Annex B. Implemented in JavaScript 1.0.</td>
</tr>
<tr>
<td>{{SpecName('ES5.1', '#sec-B.2.3', 'String.prototype.substr')}}</td>
<td>{{Spec2('ES5.1')}}</td>
<td>Defined in the (informative) Compatibility Annex B</td>
</tr>
<tr>
<td>{{SpecName('ES6', '#sec-string.prototype.substr', 'String.prototype.substr')}}</td>
<td>{{Spec2('ES6')}}</td>
<td>Defined in the (normative) Annex B for Additional ECMAScript Features for Web Browsers</td>
</tr>
<tr>
<td>{{SpecName('ESDraft', '#sec-string.prototype.substr', 'String.prototype.substr')}}</td>
<td>{{Spec2('ESDraft')}}</td>
<td>Defined in the (normative) Annex B for Additional ECMAScript Features for Web Browsers</td>
</tr>
</tbody>
</table>
<h2 id="Navegadores_compatíveis">Navegadores compatíveis</h2>
<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p>
<p>{{Compat("javascript.builtins.String.substr")}}</p>
<h2 id="Veja_também">Veja também</h2>
<ul>
<li>{{jsxref("String.prototype.slice()")}}</li>
<li>{{jsxref("String.prototype.substring()")}}</li>
</ul>
|