Skip to content

Commit a2500e9

Browse files
authored
Merge pull request #704 from Andrii256/01-05-03-string
Fix string (01-05-03)
2 parents 1a14e4e + 434ca2d commit a2500e9

File tree

1 file changed

+18
-18
lines changed

1 file changed

+18
-18
lines changed

1-js/05-data-types/03-string/article.md

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ alert(str1 == str2); // true
8787

8888
Усі спеціальні символи починаються зі зворотного слеша `\`. Його також називають "символом екранування".
8989

90-
Оскільки це так особливо, якщо нам потрібно показати зворотний слеш `\` у рядку, нам потрібно подвоїти його:
90+
Оскільки він не зовсім звичайний, то якщо нам потрібно показати зворотний слеш `\` у рядку, нам потрібно подвоїти його:
9191

9292
```js run
9393
alert( `Зворотний слеш: \\` ); // Зворотний слеш: \
@@ -101,9 +101,9 @@ alert( `Зворотний слеш: \\` ); // Зворотний слеш: \
101101
alert( 'Ім*!*\'*/!*я моє — Морж!' ); // *!*Ім'я*/!* моє — Морж!
102102
```
103103

104-
Як бачите, ми повинні "екранувати" лапку зворотним слешем `\'`, оскільки інакше це означало б кінець рядка.
104+
Як бачите, ми повинні "екранувати" лапку зворотним слешем `\'`, оскільки інакше ця лапка означала б кінець рядка.
105105

106-
Звісно, потрібно "екранувати" лише такі лапки, якими обрамлений рядок. Як елегантніше рішення, ми могли б замість цього скористатися подвійними або зворотними лапками:
106+
Звісно ж, потрібно "екранувати" лише такі лапки, якими обрамлений рядок. Або ще більш елегантним рішенням було б замість цього скористатися подвійними або зворотними лапками:
107107

108108
```js run
109109
alert( `Ім'я моє — Морж!` ); // Ім'я моє — Морж!
@@ -214,7 +214,7 @@ alert( 'Interface'[0].toLowerCase() ); // 'і'
214214

215215
Перший метод -- [str.indexOf(substr, pos)](mdn:js/String/indexOf).
216216

217-
Він шукає підрядок `substr` в рядку `str`, починаючи з позиції `pos`, і повертає позицію, де знаходиться збіг, або `-1` якщо збігів не було знайдено.
217+
Він шукає підрядок `substr` в рядку `str`, починаючи з позиції `pos`, і повертає позицію, де знаходиться збіг, або якщо збігів не було знайдено, то `-1`.
218218

219219
Наприклад:
220220

@@ -237,7 +237,7 @@ let str = 'Віджет з ідентифікатором';
237237
alert( str.indexOf('ід', 2) ) // 9
238238
```
239239

240-
Щоб знайти усі збіги, нам потрібно запустити `indexOf` в циклі. Кожен новий виклик здійснюється з позицією після попереднього збігу:
240+
Щоб знайти усі збіги, нам потрібно запустити `indexOf` в циклі. Кожен новий виклик починається з позиції після попереднього збігу:
241241

242242
```js run
243243
let str = 'Хитрий, як лисиця, сильний, як Як';
@@ -356,9 +356,9 @@ alert( "Від*!*жет*/!*".endsWith("жет") ); // true, "Віджет" за
356356
```
357357

358358
`str.substring(start [, end])`
359-
: Повертає частину рядка *між* `start` та `end` (не включаючи `end`)..
359+
: Повертає частину рядка *між* `start` та `end` (не включаючи `end`).
360360

361-
Цей метод майже такий самий що і `slice`, але він дозволяє задати `start` більше ніж `end` (у цьому випадку він просто міняє значення `start` і `end` місцями).
361+
Цей метод майже такий самий як і `slice`, але `substring` дозволяє задати `start` більше значення, ніж `end` (у такому випадку він просто поміняє значення `start` і `end` місцями).
362362

363363
Наприклад:
364364

@@ -394,7 +394,7 @@ alert( "Від*!*жет*/!*".endsWith("жет") ); // true, "Віджет" за
394394
alert( str.substr(-4, 2) ); // 'gi', починаючи з позиції 4 з кінця отримуєму 2 символа
395395
```
396396

397-
Цей метод міститься в [Annex B](https://tc39.es/ecma262/#sec-string.prototype.substr) специфікації мови. Це означає, що лише рушії браузерного Javascript мають його підтримувати, і не рекомендується його використовувати. На практиці це підтримується всюди.
397+
Цей метод міститься в [Annex B](https://tc39.es/ecma262/#sec-string.prototype.substr) специфікації мови. Це означає, що його мають підтримувати лише браузерні рушії Javascript, і не рекомендується його використовувати. На практиці це підтримується всюди.
398398

399399
Давайте підсумуємо ці методи щоб не заплутатись:
400400

@@ -405,7 +405,7 @@ alert( "Від*!*жет*/!*".endsWith("жет") ); // true, "Віджет" за
405405
| `substr(start, length)` | `length` символів від `start` | дозволяє відʼємні значення `start` |
406406

407407
```smart header="Який метод вибрати?"
408-
Усі вони можуть виконати задачу. Формально `substr` має незначний недолік: він описаний не в основній специфікації JavaScript, а в Annex B, який охоплює лише функції браузера, які існують переважно з історичних причин. Тому не браузерні середовища, можуть не підтримувати його. Але на практиці це працює всюди.
408+
Усі вони можуть виконати задачу. Формально `substr` має незначний недолік: він описаний не в основній специфікації JavaScript, а в Annex B, яка охоплює лише функції браузера, які існують переважно з історичних причин. Тому не браузерні середовища, можуть не підтримувати його. Але на практиці це працює всюди.
409409
410410
З двох інших варіантів `slice` дещо гнучкіший, він допускає від'ємні аргументи та коротший в записі.
411411
@@ -424,15 +424,15 @@ alert( "Від*!*жет*/!*".endsWith("жет") ); // true, "Віджет" за
424424
alert( 'a' > 'Z' ); // true
425425
```
426426

427-
2. Літери з діакритичними знаками "не в порядку":
427+
2. Літери з діакритичними знаками "не по порядку":
428428

429429
```js run
430430
alert( 'Österreich' > 'Zealand' ); // true
431431
```
432432

433433
Це може призвести до дивних результатів, якщо ми відсортуємо ці назви країн. Зазвичай люди очікують, що `Zealand` буде після `Österreich`.
434434

435-
Щоб зрозуміти, що відбувається, давайте розглянемо внутрішнє представлення рядків у JavaScript закодованих за допомогою [UTF-16](https://uk.wikipedia.org/wiki/UTF-16). Тобто: кожен символ має відповідний числовий код..
435+
Щоб розуміти, що відбувається, нам слід бути в курсі, що рядки в JavaScript реалізовані з використанням [UTF-16](https://uk.wikipedia.org/wiki/UTF-16). Тобто, кожен символ має свій відповідний числовий код.
436436

437437
Існують спеціальні методи, які дозволяють отримати символ по коду і навпаки.
438438

@@ -444,7 +444,7 @@ alert( "Від*!*жет*/!*".endsWith("жет") ); // true, "Віджет" за
444444
alert( "z".codePointAt(0) ); // 122
445445
alert( "Z".codePointAt(0) ); // 90
446446
alert( "z".codePointAt(0) ); // 122
447-
alert( "z".codePointAt(0).toString(16) ); // 7a (if we need a hexadecimal value)
447+
alert( "z".codePointAt(0).toString(16) ); // 7a (якщо нам треба значення в шістнадцятковій системі числення)
448448
```
449449

450450
`String.fromCodePoint(code)`
@@ -464,12 +464,12 @@ for (let i = 65; i <= 220; i++) {
464464
str += String.fromCodePoint(i);
465465
}
466466
alert( str );
467-
// Output:
467+
// alert виведе:
468468
// ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„
469469
// ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜ
470470
```
471471
472-
Бачите? Спочатку вводяться великі символи, потім кілька спеціальних, потім символи нижнього регістру та `Ö` ближче до кінця виводу.
472+
Бачите? Спочатку виводяться великі символи, потім кілька спеціальних, потім символи нижнього регістру та `Ö` ближче до кінця виводу.
473473
474474
Тепер стає очевидним, чому `a > Z`.
475475
@@ -482,11 +482,11 @@ alert( str );
482482
483483
«Правильний» алгоритм порівняння рядків є складнішим, ніж може здатися, тому що для різних мов – різні алфавіти.
484484
485-
Отже, браузеру потрібно знати, яку мову використовувати для порівняння.
485+
Отже, браузеру потрібно знати алфавіт якої мови використовувати для порівняння.
486486
487487
На щастя, усі сучасні браузери підтримують стандарт інтернаціоналізації [ECMA-402](https://www.ecma-international.org/publications-and-standards/standards/ecma-402/).
488488
489-
Він забезпечує спеціальний метод для порівняння рядків різними мовами, дотримуючись їхніх правил.
489+
Він забезпечує спеціальний метод для порівняння рядків з різних мов, дотримуючись їхніх правил.
490490
491491
Виклик [str.localeCompare(str2)](mdn:js/String/localeCompare) повертає ціле число, яке вказує, чи є `str` меншим, рівним чи більшим за `str2` відповідно до правил мови:
492492
@@ -500,7 +500,7 @@ alert( str );
500500
alert( 'Österreich'.localeCompare('Zealand') ); // -1
501501
```
502502
503-
Цей метод насправді має два додаткові аргументи, зазначені в [документації](mdn:js/String/localeCompare), що дозволяє йому вказати мову (типово взяту з середовища, порядок букв залежить від мови) і встановити додаткові правила, як-от чутливість до регістру або чи слід розглядати різницю між `"a"` та `""`.
503+
Цей метод насправді має два додаткові аргументи, зазначені в [документації](mdn:js/String/localeCompare), що дозволяє явно вказати йому мову (яку він типово визначає опираючись на середовище. І від чого залежить порядок букв), і встановити додаткові правила, як-от чутливість до регістру або чи слід розглядати різницю між `"a"` та `""`.
504504
505505
## Підсумки
506506
@@ -510,7 +510,7 @@ alert( 'Österreich'.localeCompare('Zealand') ); // -1
510510
- Щоб отримати підрядок, використовуйте: `slice` або `substring`.
511511
- Щоб перевести рядок у нижній/верхній регістри, використовуйте: `toLowerCase/toUpperCase`.
512512
- Щоб знайти підрядок, використовуйте: `indexOf`, або `includes/startsWith/endsWith` для простих перевірок.
513-
- Щоб порівняти рядки з урахуванням правил мови, використовуйте: `localeCompare`, інакше вони порівнюються за кодами символів.
513+
- Щоб порівняти рядки з урахуванням правил мови, використовуйте `localeCompare`, інакше рядки порівнюються за кодами символів.
514514
515515
Є кілька інших корисних методів у рядках:
516516

0 commit comments

Comments
 (0)