Рядки та робота із символами - Введення в програмування
Лексикографічний порядок
Пам'ятайте, '8' це число, а рядок.
Інтерполяція
Зі зворотними тиками ви можете використовуватиінтерполяцію, замість конкатенації. Ось дивіться:
Такий код виведе на екран His name was Alex and his age was 22 . Всередину $<> ви можете помістити будь-який вираз.
- Такий код змушує більше думати, тому що синтаксично + більше скидається на додавання.
- Через слабку типізацію можна легко отримати не той результат. Конкатенація може спричинити помилки.
- Складні рядки під час використання конкатенації неможливо нормально розібрати в голові та зрозуміти, як вони влаштовані.
Конспект уроку
- Рядок - це послідовність символів
- Порожній рядок - це теж рядок (послідовність нуля символів)
- Позначається одиничними або подвійними лапками
Створення рядка з константою:
Можна включити лапку одного типу всередину рядка, оточивши її лапками іншого типу:
Якщо в рядку використовуються лапки того ж типу, вони повинні бутиекрановані за допомогою зворотного слішу \ :
Якщо рядок включає зворотний сліш (саме як символ, який хочеться мати в рядку), він повинен бути екранований іншим зворотним слішем:
Також існуютькеруючі символи — спеціальні комбінації, які генерують невидимі деталі:
\t це табуляція, \n це перенесення на новий рядок. Більше про екранування (англ).
Конкатенація рядків
Рядки можуть склеюватися один з одним. Такий процес називаєтьсяконкатенацією і задається символом + :
Рядки будуть склеєні в тому порядку, в якому вони вказані: "mos" + "cow" → "moscow", а "cow" + "mos" → "cowmos"
Доступ до індивідуальнихсимволів
str[i] це перший символ рядка str , що починається з 0. Наприклад, "hexlet"[0] це h , а "hexlet"[2] це x .
Ось функція, яка приймає рядок та повертає копію цього рядка без кожної другої літери. Наприклад, "hexlet" стає "hxe".
str.length це довжина str, тобто кількість символів. Це просто кількість, тому мине починаємо відлік від 0. Наприклад, "food".length це 4.
Транскрипт уроку
Пам'ятаєте свою першу програму "hello, world"?
Зараз ви знаєте, що тут відбувається виклик функції, а функція console.log приймає аргумент. В даному випадку аргумент - не число, а "рядок". Так ми називаємо фрагменти тексту у програмуванні, тому що вони як послідовність літер на мотузці.
Так само, як ми це робили з числами, ми можемо створити константу з рядка:
Ви можете використовувати поодинокі лапки або подвійні, не так важливо, головне, щоб вони були однакові і на початку і в кінці рядка.
Якщо вам необхідно використовувати реальні лапки всередині рядка, тоді використовуйте інший знак для створення. Наприклад:
Тут одиночні лапки використовуються для формулювання або обмеження рядка, і тоді ми маємо можливість поставити подвійні всередині. Або навпаки:
Подвійні зовні одиночні всередині.
Але що робити, якщо таке неможливо, і вам потрібно використовувати однаковий тип лапок і для формулювання рядка і в ньому. Якщо ви спробуєте зробити так
Це називається "екрануванням". Додайте символ екранування, зворотний слєш перед символом, і символ "ізолюється" від своєї специфічної ролі і перетвориться на звичайний знак у рядку.
Цей символ екранування можна використовувати для вставлення інших спеціальних символів у рядок.
Тут є три моменти.
Перший: якщо нам потрібний зворотний сліш у рядку, то він повинен бути екранований іншим зворотним слішем.
Друге: зворотний слєш-t це не "екранований t-символ": вам не потрібно екранувати "t", "t" - це не спеціальний символ; вся конструкція зворотний слєш-t - це спеціальнакеруюча послідовність - вона являє собою одиничну табуляцію, по суті - довгий пробіл.
Третє: зворотний слєш-n - це інша керуюча послідовність, яка являє собою новий рядок. Вважай, що ви натиснете клавішу Enter, коли набираєте текст. Тому, все, що йде далі, перейде на новий рядок.
Тепер спробуємо написати функцію. Вона прийматиме рядок — ім'я та повертатиме інший рядок — привітання. Ось як це має працювати:
Тепер інший приклад. Ця функція приймає рядок і повертає той самий рядок, але без кожної другої літери. Наприклад, "California" стає "Clfri".
Такі квадратні дужки дозволяють отримувати індивідуальні символи з рядка. Як і в багатьох процесах у програмуванні, ви починаєте відлік з 0, а не від 1. Тому перший символ str це str[0], другий - str[1], і так далі. Це число називається "індексом".
Функція skip приймає аргумент, створює дві змінні - i для лічильника і result для підсумкового рядка. Лічильник - це 0, тому що нам потрібно почати з першого символу, а результат - це порожній рядок - ми будемо додавати символи до неї один за одним.
Потім слідує цикл while, з умовою , що "i менше, ніж довжина рядка". Довжина означає "скільки символів". Довжина рядка "cats" - 4 - в ній 4 символи, 4 літери.
Поки лічильник менший за довжину, ми склеюємо або конкатенуємо результуючий рядок із символом за індексом i. Потім додаємо2 до лічильника. Два, а не одна, тому що нам потрібно пропустити один символ.
У якийсь момент лічильник стане досить великим для того, щоб умова циклу стала хибною, і функція поверне result .
Спробуймо викликати функцію з аргументом 'cats':
Довжина "cats" - 4. Незважаючи на те, що індекси починаються з 0, довжина - це дійсна кількість. 'c' - не 0 букв, це одна буква. Тому довжина 'cats' – 4, але індекс його останньої літери – 3.
- 0 менше чотирьох, тому увійти в цикл while
- конкатенувати рядок із символом за індексом 0 — це 'c'
- збільшити лічильник на 2
- 2 менше 4, тому повторити
- конкатенувати рядок із символом за індексом 2 – це 't'. рядок тепер став 'ct'
- збільшити лічильник на 2
- 4 не менше 4, тому більше не повторювати
- повернути результат - 'ct'