Добрый день! Меня зовут Чистяков Денис, и в течение следующих двух недель я расскажу вам об основных типах данных, о которых не рассказал Сережа Жигалов, о том, как ими пользоваться, и о том, как их можно применять, для решения каких задач их можно применять. Я занимаюсь веб-разработкой уже 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, поняли, что мы можем с ними делать, что мы можем в них хранить, и с помощью каких методов мы можем с ними работать. Спасибо!