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
|
---
title: String.prototype.indexOf()
slug: Web/JavaScript/Reference/Global_Objects/String/indexOf
tags:
- JavaScript
- Method
- Prototype
- Reference
- Référence(2)
- String
translation_of: Web/JavaScript/Reference/Global_Objects/String/indexOf
---
<div>{{JSRef("Global_Objects", "String")}}</div>
<h2 id="Summary">Сводка</h2>
<p>Метод <strong><code>indexOf()</code></strong> возвращает индекс первого вхождения указанного значения в строковый объект {{jsxref("Global_Objects/String", "String")}}, на котором он был вызван, начиная с индекса <code>fromIndex</code>. Возвращает -1, если значение не найдено.</p>
<h2 id="Syntax">Синтаксис</h2>
<pre class="syntaxbox"><code><var>str</var>.indexOf(<var>searchValue</var>, [<var>fromIndex</var>]</code>)</pre>
<h3 id="Parameters">Параметры</h3>
<dl>
<dt><code>searchValue</code></dt>
<dd>Строка, представляющая искомое значение.</dd>
<dt><code>fromIndex</code></dt>
<dd>Необязательный параметр. Местоположение внутри строки, откуда начинать поиск. Может быть любым целым числом. Значение по умолчанию установлено в 0. Если <code>fromIndex < 0</code>, поиск ведётся по всей строке (так же, как если бы был передан 0). Если <code>fromIndex >= str.length</code>, метод вернёт -1, но только в том случае, если <code>searchValue</code> не равен пустой строке, в этом случае он вернёт <code>str.length</code>.</dd>
</dl>
<h2 id="Description">Описание</h2>
<p>Символы в строке идут слева направо. Индекс первого символа равен 0, а последнего символа в строке <code>stringName</code> равен <code>stringName.length - 1</code>.</p>
<pre class="brush: js">'Синий кит'.indexOf('Синий'); // вернёт 0
'Синий кит'.indexOf('Голубой'); // вернёт -1
'Синий кит'.indexOf('кит', 0); // вернёт 6
'Синий кит'.indexOf('кит', 5); // вернёт 6
'Синий кит'.indexOf('', 8); // вернёт 8
'Синий кит'.indexOf('', 9); // вернёт 9
'Синий кит'.indexOf('', 10); // вернёт 9
</pre>
<h3 id="Case-sensitivity">Регистрозависимость</h3>
<p>Метод <code>indexOf()</code> является регистрозависимым. Например, следующее выражение вернёт -1:</p>
<pre class="brush: js">'Синий кит'.indexOf('синий'); // вернёт -1
</pre>
<h3 id="Checking_occurrences">Проверка на вхождение</h3>
<p>Обратите внимание, что значение 0 не вычисляется в <code>true</code>, а значение -1 не вычисляется в <code>false</code>. Поэтому, для проверки того, что конкретная строка содержится в другой строке, правильно делать так:</p>
<pre class="brush: js">'Синий кит'.indexOf('Синий') !== -1; // true
'Синий кит'.indexOf('Голубой') !== -1; // false
</pre>
<h2 id="Examples">Примеры</h2>
<h3 id="Example:_Using_indexOf_and_lastIndexOf">Пример: использование методов <code>indexOf()</code> и <code>lastIndexOf()</code></h3>
<p>В следующем примере используются методы <code>indexOf()</code> и {{jsxref("String.prototype.lastIndexOf()", "lastIndexOf()")}} для нахождения значений в строке <code>"Дивный новый мир"</code>.</p>
<pre class="brush: js">var anyString = 'Дивный новый мир';
console.log('Индекс первого вхождения «й» с начала строки равен ' + anyString.indexOf('й'));
// Отобразит 5
console.log('Индекс первого вхождения «й» с конца строки равен ' + anyString.lastIndexOf('й'));
// Отобразит 11
console.log('Индекс вхождения «новый» с начала строки равен ' + anyString.indexOf('новый'));
// Отобразит 7
console.log('Индекс вхождения «новый» с конца строки равен ' + anyString.lastIndexOf('новый'));
// Отобразит 7
</pre>
<h3 id="Example:_indexOf_and_case-sensitivity">Пример: метод <code>indexOf()</code> и регистрозависимость</h3>
<p>В следующем примере определяются две строковых переменных. Переменные содержат одинаковые строки, за исключение того, что слова во второй строке начинаются с заглавных букв. Первый вызов метода {{domxref("console.log()")}} отобразит 18. Но поскольку метод <code>indexOf()</code> является регистрозависимым, строка <code>"чеддер"</code> в переменной <code>myCapString</code> не будет найдена, так что второй вызов метода <code>console.log()</code> отобразит -1.</p>
<pre class="brush: js">var myString = 'бри, пеппер джек, чеддер';
var myCapString = 'Бри, Пеппер Джек, Чеддер';
console.log('Вызов myString.indexOf("чеддер") вернул ' + myString.indexOf('чеддер'));
// Отобразит 18
console.log('Вызов myCapString.indexOf("чеддер") вернул ' + myCapString.indexOf('чеддер'));
// Отобразит -1
</pre>
<h3 id="Example:_Using_indexOf_to_count_occurrences_of_a_letter_in_a_string">Пример: использование метода <code>indexOf()</code> для подсчёта вхождений буквы в строку</h3>
<p>Следующий пример устанавливает значение переменной <code>count</code> в количество вхождений буквы <code>в</code> в строку <code>str</code>:</p>
<pre class="brush: js">var str = 'Быть или не быть, вот в чём вопрос.';
var count = 0;
var pos = str.indexOf('в');
while (pos !== -1) {
count++;
pos = str.indexOf('в', pos + 1);
}
console.log(count); // отобразит 3
</pre>
<h2 id="Specifications">Спецификации</h2>
{{Specifications}}
<h2 id="Browser_compatibility">Совместимость с браузерами</h2>
<p>{{Compat}}</p>
<h2 id="See_also">Смотрите также</h2>
<ul>
<li>{{jsxref("String.prototype.charAt()")}}</li>
<li>{{jsxref("String.prototype.lastIndexOf()")}}</li>
<li>{{jsxref("String.prototype.split()")}}</li>
<li>{{jsxref("Array.prototype.indexOf()")}}</li>
</ul>
|