Рядки
ВАЖЛИВО: цей розділ не є обов'язковим для дорослих, для проходження вступного тестування Ш++ тому можете переходити до наступної теми. Але якщо є час та натхнення — краще почитайте та зробіть задачі ;)
Для початку згадаємо, що таке рядки, і що з ними можна робити. Що буде, якщо запустити цей код?
На цьому прикладі видно, як склеювати рядки і виводити їх на екран. Також, на екран можна виводити конкретний символ в рядку, якщо сприймати текстовий рядок як масив (але все ж таки це не масив!):
Іноді буває, що потрібно змінити рядок. Це не так просто: потрібно скопіювати рядок в масив посимвольно і змінювати кожну окрему комірку в масиві.
а потім можна склеїти назад масив символів в рядок
подивимось на результат:
... а всю цю маніпуляцію ми робимо, тому що рядки — immutable (незмінні). А масиви можна змінювати (точніше значення їх комірок)
це треба перевірити:
Взагалі, є варіанти змінити рядок простіше, але ми їх вам не показуємо, тому що всередині вони працюють так само як і варіант вище, просто пишуться по-іншому.
Для того, щоб рухатися далі ─ треба зрозуміти, що таке таблиця ASCII і навіщо вона потрібна. Ось вона:
У цій табличці вказані числа, які відповідають символам в рядках. Для комп'ютера все є числами.
Перші числа від 0 до 31 кодують будь-яку дивну штуку, але із знайомого там — код 13 (символ переходу на наступний рядок, зазвичай записується як "\n") і код 9 (табуляція). Втім неважливо. Набагато простіше сприймати коди від 32 до 126 ─ там вже звичні нам символи, від пробілу і знаку оклику до букви z. Після 127 йде темний ліс ─ всілякі закарлючки, російські літери та інше, ми з ними працювати не будемо (поки що).
Розуміючи, що всі літери ─ це числа за фактом, можна з ними робити будь-які маніпуляції. Як перетворити символ в його число-код?
Так, наприклад:
або ж так:
... тут 0 або 1 ─ це позиція символу в рядку, для якого ми хочемо отримати код. Виходить "ABE".charCodeAt(2)
поверне 69
А можна будь-який ASCII-код перетворити назад в символ.
... завдяки коду символу, можна легко з'ясувати, чи є цей символ літерою.
Адже насправді все питання в діапазонах, які можна підглянути в таблиці ASCII. Наприклад великі літери починаються з числа 65 і закінчуються ... не пам'ятаю, самі подивіться в таблиці. Нагадаю, що в задачах Ш++ маються на увазі тільки латинські літери.
Що цікаво — символам, що позначають числа (наприклад "0") відповідають зовсім інші числа (у "0" код 48, а не 0). До речі код 0 — це взагалі окрема тема, але в javascript з нею практично не стикаються, тому зупинятися на цьому не будемо.
Робота із рядками може бути набагато простіше, АЛЕ:
Ми спеціально не розповідаємо набагато зручніші способи роботи з рядками
Тому що завдання цього етапу — навчити вас користуватися тим, що є.
...а не магічними функціями, які працюють незрозуміло як і роблять все самі.
Тому що ми не вчимо рядки — насправді ми вчимося писати код і вирішувати ним завдання, а інструменти ви вивчите пізніше
Тому прохання для вирішення задачок не використовувати об'єкти, мепи, різні методи класу String і інші приколи, про які легко дізнатися, якщо погуглити завдання. Ми їх вивчимо пізніше.
Загалом, краще не гуглити нічого додатково. ...просте використання циклів і масивів (за прикладами того що було вгорі показано) 一 ось що ми очікуємо від вас при вирішенні домашніх завдань
Для практики можете написати програму, яка промотує лічильник від 32 до 126 і виводить символи, які відповідають цим кодам через пробіл, c допомогою fromCharCode
Додаткові матеріали
Про рядки (uk.javascript.info)
Ще про рядки (яваскрипт.укр)
Про шаблонні рядки (яваскрипт.укр)
Обов'язкові задачі
Нагадуємо, що "чіти" типу .toLowerCase()
— не можна використовувати в розв'язанні наших задач. Все тому, що завдання створенні, аби вчити вас алгоритміці, а не для проходження "для галочки" ;)
Виникли питання або труднощі? Зверніться за допомогою до Ш++.
Last updated