diff options
Diffstat (limited to 'files/uk/web/javascript/reference/global_objects/string/indexof/index.html')
-rw-r--r-- | files/uk/web/javascript/reference/global_objects/string/indexof/index.html | 154 |
1 files changed, 154 insertions, 0 deletions
diff --git a/files/uk/web/javascript/reference/global_objects/string/indexof/index.html b/files/uk/web/javascript/reference/global_objects/string/indexof/index.html new file mode 100644 index 0000000000..3c0639bad4 --- /dev/null +++ b/files/uk/web/javascript/reference/global_objects/string/indexof/index.html @@ -0,0 +1,154 @@ +--- +title: String.prototype.indexOf() +slug: Web/JavaScript/Reference/Global_Objects/String/indexOf +tags: + - JavaScript + - Prototype + - String + - Довідка + - метод +translation_of: Web/JavaScript/Reference/Global_Objects/String/indexOf +--- +<div>{{JSRef}}</div> + +<p>Метод <strong><code>indexOf()</code></strong> починає пошук від символа за індексом <code>fromIndex</code> всередині об'єкта <code>{{jsxref("String")}}</code>, з якого здійснюється виклик метода, і вертає індекс першого знайденого збігу із шуканим значенням. Якщо значення не знайдене, повертає <code>-1</code>.</p> + +<p>{{EmbedInteractiveExample("pages/js/string-indexof.html")}}</p> + +<div class="hidden"> +<p>The source for this interactive example is stored in a GitHub repository. If you'd like to contribute to the interactive examples project, please clone <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> and send us a pull request.</p> +</div> + +<div class="note"><strong>Заувага:</strong> Клас <code>Array</code> має подібний метод <code>{{jsxref("Array.prototype.indexOf()", "indexOf()")}}</code>.</div> + +<h2 id="Синтаксис">Синтаксис</h2> + +<pre class="syntaxbox"><var>str</var>.indexOf(<var>searchValue</var>[, <var>fromIndex</var>])</pre> + +<h3 id="Параметри">Параметри</h3> + +<dl> + <dt><em><code>searchValue</code></em></dt> + <dd>Рядок, що є шуканим значенням.</dd> + <dd>Якщо рядок явно не заданий, <a href="https://tc39.github.io/ecma262/#sec-tostring"><var>searchValue</var> буде примусово приведений до <code>"undefined"</code></a>, і пошук цього значення буде здійснюватись у <code><var>str</var></code>.</dd> + <dd>Отже, для прикладу: <code>'undefined'.indexOf()</code> поверне <code>0</code>, оскільки значення undefined знайдене на позиції <code>0</code>, але <code>'undefine'.indexOf()</code> поверне <code>-1</code>, оскільки рядок <code>"undefine"</code> не знайдений.</dd> + <dt><em><code>fromIndex</code> </em>{{optional_inline}}</dt> + <dd>Ціле число, що позначає індекс, з якого має розпочинатися пошук; за замовчуванням дорівнює <code>0</code>.</dd> + <dd>Якщо вказане значення <code>fromIndex</code> менше за <code>0</code> чи більше за <code>str.length</code>, пошук розпочнеться з індексу <code>0</code> та <code>str.length</code>, відповідно.</dd> + <dd>Для прикладу, <code>'всім привіт'.indexOf('м', -5)</code> поверне <code>3</code>, оскільки метод почне пошук з позициї <code>0</code>, а <code>м</code> знайдеться на позиції <code>3</code>. З іншого боку, <code>'всім привіт'.indexOf('м', 11)</code> (і з будь-яким значенням <code>fromIndex</code>, більшим за <code>11</code>) поверне <code>-1</code>, оскільки пошук починається з позиції <code>11</code>, позиції <em>після</em> кінця рідка.</dd> +</dl> + +<h3 id="Вертає">Вертає</h3> + +<p>Індекс першого знайденого збігу з <em><code>searchValue</code></em>, або <strong><code>-1</code></strong>, якщо жодного збігу не знайдено.</p> + +<p>Порожній рядок <code><var>searchValue</var></code> призводить до дивних результатів. За відсутності значення <code><var>fromIndex</var></code>, чи будь-якого значення <em><code>fromIndex</code></em>, нижчого за довжину рядка, повернене значення буде таким самим, як значення <code><var>fromIndex</var></code>:</p> + +<pre class="brush: js">'всім привіт'.indexOf('') // вертає 0 +'всім привіт'.indexOf('', 0) // вертає 0 +'всім привіт'.indexOf('', 3) // вертає 3 +'всім привіт'.indexOf('', 8) // вертає 8</pre> + +<p>Однак, якщо значення <code><var>fromIndex</var></code> є рівним або більшим за довжину рядка, повернене значення <em>дорівнює</em> довжині рядка:</p> + +<pre class="brush: js">'всім привіт'.indexOf('', 11) // вертає 11 +'всім привіт'.indexOf('', 13) // вертає 11 +'всім привіт'.indexOf('', 22) // вертає 11</pre> + +<p>В минулій версії JS порожній рядок відшукувався одразу після вказаного значення індексу. У останній версії JS порожній рядок буде знайдений в кінці рядка, в якому здійснюється пошук.</p> + +<h2 id="Опис">Опис</h2> + +<p>Символи рядка індексуються зліва направо. Індекс першого символу дорівнює <code>0</code>, а індекс останнього символу рядка <code><em>stringName</em></code> дорівнює <code><em>stringName</em>.length - 1</code>.</p> + +<pre class="brush: js">'Непозбувна бентега'.indexOf('Непозбувна'); // вертає 0 +'Непозбувна бентега'.indexOf('Непозбувний'); // вертає -1 +'Непозбувна бентега'.indexOf('бентега', 0); // вертає 11 +'Непозбувна бентега'.indexOf('бентега', 5); // вертає 11 +'Непозбувна бентега'.indexOf('бентега', 12); // вертає -1 +'Розкішниця'.indexOf(''); // вертає 0 +'Розкішниця'.indexOf('', 9); // вертає 9 +'Розкішниця'.indexOf('', 10); // вертає 10 +'Розкішниця'.indexOf('', 11); // вертає 10</pre> + +<p>Метод <code>indexOf()</code> є регістрозалежним. Наприклад, вираз нижче повертає <code>-1</code>:</p> + +<pre class="brush: js">'Непозбувна бентега'.indexOf('Бентега'); // вертає -1 +</pre> + +<h3 id="Перевірка_наявності_підрядка">Перевірка наявності підрядка</h3> + +<p>Зважте на те, що <code>0</code> не обчислюється як <code>true</code>, а <code>-1</code> не обчислюється як <code>false</code>. Отже, належить у явний спосіб порівнювати значення, що повертається методом <code>indexOf()</code>, зі значенням <code>-1</code>:</p> + +<pre class="brush: js">'Непозбувна бентега'.indexOf('бентега') !== -1; // true +'Непозбувна бентега'.indexOf('Бентега') !== -1; // false +~('Непозбувна бентега'.indexOf('Непозбувний')) // 0, тобто, хибне значення</pre> + +<h2 id="Приклади">Приклади</h2> + +<h3 id="Використання_indexOf">Використання <code>indexOf()</code></h3> + +<p>Наступний приклад використовує <code>indexOf()</code>, щоб знайти значення у рядку <code>"абабагаламага"</code>.</p> + +<pre class="brush: js">const str = '<code>абабагаламага</code>' + +console.log('Індекс першої г з початку дорівнює ' + str.indexOf('г')) // виводить 5 +console.log('Індекс "баба" з початку дорівнює ' + str.indexOf('баба')) // виводить 1</pre> + +<h3 id="Регістрозалежність_метода_indexOf">Регістрозалежність метода <code>indexOf()</code></h3> + +<p>В цьому прикладі наведено два текстових рядки.</p> + +<p>Їх вміст є майже однаковим, але у <code>myCapString</code> слова починаються з великої літери. Перший метод <a href="/uk/docs/Web/API/Console/log" title="The Console method log() outputs a message to the web console."><code>console.log()</code></a> виводить <code>13</code>. Але, через те, що метод <code>indexOf()</code> чутливий до регістру, рядок <code>"камамбер"</code> не знаходиться у <code>myCapString</code>, а отже, другий метод <code>console.log()</code> виводить <code>-1</code>.</p> + +<pre class="brush: js">var myString = 'брі, дорблю, камамбер'; +var myCapString = 'Брі, Дорблю, Камамбер'; + +console.log('myString.indexOf("камамбер") дорівнює ' + myString.indexOf('камамбер')) +// виводить 13 +console.log('myCapString.indexOf("камамбер") дорівнює ' + myCapString.indexOf('камамбер')) +// виводить -1</pre> + +<h3 id="Використання_indexOf_для_підрахунку_кількості_вживань_літери_у_рядку">Використання <code>indexOf()</code> для підрахунку кількості вживань літери у рядку</h3> + +<p>Наступний приклад присвоює змінній <code>count</code> число вживать літери <code>с</code> у рядку <code>str</code>:</p> + +<pre class="brush: js">const str = 'Буває, часом сліпну від краси.' +let count = 0 +let position = str.indexOf('с') + +while (position !== -1) { + count++ + position = str.indexOf('с', position + 1) +} + +console.log(count) // виводить 3</pre> + +<h2 id="Специфікації">Специфікації</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Специфікація</th> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-string.prototype.indexof', 'String.prototype.indexOf')}}</td> + </tr> + </tbody> +</table> + +<h2 id="Підтримка_веб-переглядачами">Підтримка веб-переглядачами</h2> + +<div class="hidden">Таблиця сумісності на цій сторінці створена зі структурованих даних. Якщо ви хочете долучитися до розробки цих даних, пропонуйте нам свої pull request до репозиторію <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a>.</div> + +<p>{{Compat("javascript.builtins.String.indexOf")}}</p> + +<h2 id="Див._також">Див. також</h2> + +<ul> + <li>{{jsxref("String.prototype.charAt()")}}</li> + <li>{{jsxref("String.prototype.lastIndexOf()")}}</li> + <li>{{jsxref("String.prototype.includes()")}}</li> + <li>{{jsxref("String.prototype.split()")}}</li> + <li>{{jsxref("Array.prototype.indexOf()")}}</li> +</ul> |