0:00
Добрый день!
Меня зовут Чистяков Денис,
и в течение следующих двух недель я расскажу вам об основных типах данных,
о которых не рассказал Сережа Жигалов, о том, как ими пользоваться,
и о том, как их можно применять, для решения каких задач их можно применять.
Я занимаюсь веб-разработкой уже 11 лет, и это — треть моей жизни.
Из них шесть лет я работаю в Яндексе.
Сегодня я начну свой рассказ со строк.
Строки, как и следует из названия,
необходимы для хранения в них текстовых данных.
Это могут быть наборы символов в произвольной unicode-кодировке,
и они могут быть произвольной длины.
Создание строки.
Для создания пустой строчки нам необходимо ввести две одинарных кавычки.
Таким образом мы уже создали пустую строку.
И у каждой строки в JavaScript есть свойство length, которое указывает
на длину строки, то есть количество символов, которое в ней содержится.
В нашем случае у пустой строки длина 0.
Строчки можно создавать, как я уже сказал, с помощью одинарных кавычек,
при этом они могут, естественно, содержать сразу же в себе текст.
Текст может быть на русском, на английском — неважно.
Также вы можете создавать строки с помощью двойных кавычек.
Разницы между первым и вторым вариантом нет никакой.
Все зависит исключительно от стандартов,
которые приняты у вас внутри вашей команды.
Например, у нас в Яндексе принято использовать одинарные кавычки.
Для некоторых символов внутри
строки необходимо экранирование так называемой escape-последовательностью.
Например, если вы внутри строчки, которая задана с помощью одинарных кавычек,
хотите вставить символ одинарной кавычки, то вам нужно перед ним поставить слэш.
Таким образом вы создадите строку,
состоящую из трех символов в нашем примере — это a, одинарная кавычка и b.
Длина ее будет три символа, но записываться в коде это будет в виде
четырех символов, и перед одинарной кавычкой будет идти обратный слэш.
Точно так же, если вы хотите вставить в свою строку обратный слэш,
вам тоже необходимо его заэкранировать,
дабы парсер не считал его экранированием какого-либо следующего за ним кода.
Поэтому для вставки обратного слэша вам необходимо вставить два обратных слэша.
Существует много различных escape-последовательностей,
и самые часто применяемые из них,
пожалуй — это \n для перевода символа каретки и \t для табуляции.
Таким образом мы создаем строку «a, перенос каретки,
табуляция, b», которая будет состоять из четырех символов.
Как я уже сказал, строки представляют собой наборы последовательностей
unicode-символов, и важно подчеркнуть,
что этот могут быть любые символы на любом языке: английском, китайском, немецком,
французском, итальянском, тайском, тайваньском — неважно.
И все длины всех символов на всех языках будут корректно
высчитываться и корректно определяться.
В нашем примере строка, состоящая из большого множества разных кодировок,
корректно считается по длине и состоит из 53 символов.
К любому символу внутри строки можно обратиться по его индексу и таким образом
получить единственный символ, который находится на указанной нами позиции.
И вы бы могли подумать, что таким образом можно изменить символ, то есть обратиться
к строке, указать индекс и приравнять к нему какой-то новый символ.
Более того, этот код будет корректно выполнен и не вызовет ошибку, но если вы
повторно обратитесь к строке, вы увидите, что в ней содержится старое значение.
Все строки являются неизменяемыми,
и поменять «кота» на «кита» у нас так и не получилось.
В последующие две недели я буду очень часто использовать Твиттер в своих
примерах.
Во-первых, это популярная социальная сеть, и про него многие знают,
а во-вторых, многие знакомы с его возможностями и его ограничениями.
И я буду пользоваться этими вещами для своих примеров.
Начнем с самого яркого ограничения Твиттера — это длина строки.
Как известно, Твиттер ограничивает длину сообщения, которое вы можете ввести,
в 140 символов.
Поэтому, если в интерфейса Твиттера мы бы хотели сообщать пользователю о том,
что его строка превышает допустимую длину и будет обрезана,
мы бы могли воспользоваться следующим кодом.
Он проверяет, что длина — более 140 символов, и в этом
случае и только в это случае использует метод slice, который есть у строки.
Он принимает в себя два аргумента: начальное и конечное значение,
по которому будет произведен срез из строки.
Таким образом, если строка превышает 140 символов,
мы берем первые 139 и добавляем к ним символ троеточия.
Если строка не превышает эту длину, мы оставляем ее без изменений.
И, как вы видите, наша длинная строчка стала короче и мы можем ее поместить.
Например, в поисках какого-то хэштега в нашем твите можно воспользоваться
методом indexOf.
На вход он принимает в себя подстроку и ищет
первое вхождение этой подстроки в нашей строке.
Важно понимать, что это всегда будет только первое вхождение подстроки.
И если она будет найдена, то мы найдем индекс этого вхождения.
Если подстрока не найдена, то мы получим −1.
В нашем случае у нас есть хэштег #wstdays и нет хэштега #fronttalks.
Кроме этого, существует множество других
полезных функций для работы со строками: toLowerCase,
которая приводит все символы строки к нижнему регистру, trim,
которая обрезает все пробельные символы,
а также символы переноса строки и табуляции слева и справа до начала строки,
и startsWith, которая позволяет вам проверить,
начинается ли ваша строка с какого-то текста.
Например, таким образом очень легко проверять коды городов в номерах
телефонов.
Более подробно с функциями для работы со строками вы можете ознакомиться,
перейдя по ссылке.
Их очень много, и выбор очень богат.
Итак, сегодня мы изучили строки как тип
данных в JavaScript, поняли, что мы можем с ними делать,
что мы можем в них хранить, и с помощью каких методов мы можем с ними работать.
Спасибо!