- Работа со строками в javascript: полный разбор полетов со строковыми переменными
- Синтаксис строчных переменных
- Поговорим немного о специальных символах
- Запасаемся тяжелым арсеналом методов и свойств
- Length
- charAt ()
- От toLowerCase () к toUpperCase ()
- indexOf ()
- Извлечение подстрок
- Replase ()
- Займемся конвертацией
- Числовое преобразование
- Строковая конвертация
- Работа со строками в JavaScript. Строковые функции
- Кавычки
- Спецсимволы
- Длина строки в JavaScript
- Перебор строк
- Изменяемы ли строки?
- Строковые функции
Работа со строками в javascript: полный разбор полетов со строковыми переменными
Приветствую всех, кто основательно решил изучить прототипно-ориентированный язык. В прошлый я рассказал вам про массивы, а сегодня мы будем разбирать строки JavaScript-а. Так как в этом языке все текстовые элементы являются строками (нет отдельного формата для символов), то вы можете сами догадаться, что этот раздел занимает значимую часть в изучении синтаксиса js.
Именно поэтому в этой публикации я расскажу вам, как создаются строчные элементы, какие методы и свойства для них предусмотрены, как правильно конвертировать строки, например, преобразовывать в число, каким образом можно извлечь нужную подстроку и многое другое. В добавок к этому я прикреплю примеры программного кода. А теперь вперед за дело!
Синтаксис строчных переменных
В языке js все переменные объявляются при помощи ключевого слова var, а далее в зависимости от формата оформления параметров определяется тип объявленной переменной. Как вы помните из предыдущих моих статей, в JavaScript-е отсутствует строгая типизация. Именно поэтому в коде и обстоит вот такая ситуация.
При инициализации переменных значения могут быть обрамлены в двойные, одинарные, а начиная с 2015 года и в скошенные одинарные кавычки. Ниже я прикрепил примеры каждого способа объявления строк.
- var text = “Здесь расположен какой-то текст”;
- var text = ‘Еще один вариант создания строчной переменной’;
- var text = `Новый способ оформления текста`.
Хочу уделить особое внимание третьему способу. Он обладает рядом преимуществ.
С его помощью можно спокойно осуществлять перенос строки и это будет выглядеть вот так:
А еще третий способ позволяет использовать конструкцию $. Такой инструмент нужен для вставки интерполяции. Не пугайтесь, сейчас расскажу, что это такое.
Благодаря $ в строки можно вставлять не только значения переменных, а еще и выполнять с ними арифметические и логические операции, вызывать методы, функции и т.д. Все это называется одним терминов – интерполяция. Ознакомьтесь с примером реализации данного подхода.
var pen = 3; var pencil = 1; alert(`$ + $ = $`);
В результате на экран выведется выражение: «3 + 1*5 = 8».
Что касается первых двух способов объявления строк, то в них разницы никакой нет.
Поговорим немного о специальных символах
Во многих языках программирования есть специальные символы, которые помогают управлять текстом в строках. Самый известный среди них – это перенос строки (\n).
Все аналогичные инструменты изначально начинаются с обратного слеша (\) и после идут буквы английского алфавита.
Ниже я прикрепил небольшую табличку, в которой перечислены некоторые специальные символы.
Специальный знак | Предназначение |
\n | Перенос части предложения после символа на новую строку. |
\t | Отвечает за табуляцию. Действует как Tab на клавиатуре. |
\r | Указывает возврат каретки. |
Запасаемся тяжелым арсеналом методов и свойств
Разработчиками языка было предусмотрено множество методов и свойств для упрощения и оптимизации работы со строками. А с выпуском в свет нового стандарта под названием ES-2015 в прошлом году, этот список пополнился новенькими инструментами.
Length
Начну с самого популярного свойства, которое помогает узнать длину значений строчных переменных. Это length. Он используется таким образом:
В ответе будет выведено число 9. Также данное свойство можно применять и к самим значениям:
charAt ()
Этот метод позволяет вытащить определенный символ из текста. Напоминаю, что нумерация начинается с нуля, поэтому чтобы вытащить первый символ из строки, необходимо прописать вот такие команды:
var string = «Единороги»;
alert (string.charAt (0));.
Однако полученный результат не будет символьного типа, он все еще будет считаться строкой, состоящей из одной буквы.
От toLowerCase () к toUpperCase ()
Данные методы управляют регистром символов. При написании кода «Контент».
toUpperCase () все слово будет отображено заглавными буквами.
Для противоположного эффекта стоит использовать «Контент». toLowerCase ().
indexOf ()
Востребованное и нужное средство для поиска подстроки. В качестве аргумента нужно вписать слово или фразу, которую необходимо найти, а метод возвращает позицию найденного элемента. Если же искомый текст не был найден, пользователю вернется «-1».
var text = "Организовать поиск цветов!"; alert(text.indexOf("цвет")); //19 alert(text.indexOf(" ")); //12 alert(text.lastIndexOf(" ")); //18
var text = «Организовать поиск цветов!»; alert(text.indexOf(«цвет»)); //19 alert(text.indexOf(» «)); //12 alert(text.lastIndexOf(» «)); //18
Заметьте, lastIndexOf () выполняет те же действия, только поиск осуществляется с конца предложения.
Извлечение подстрок
Для этого действия в js было создано три примерно одинаковых метода.
Разберем сначала substring (start, end) и slice (start, end). Работают одинаково. Первый аргумент определяет начальную позицию, с которой будет начинаться извлечение, а второй отвечает за конечный пункт остановки. В обоих методах строка извлекается, не включая символ, который расположен на позиции end.
var text = "Атмосфера"; alert(text.substring(4)); // выведет «сфера» alert(text.substring(2, 5)); //отобразит «мос» alert(text.slice(2, 5)); //отобразит «мос»
var text = «Атмосфера»; alert(text.substring(4)); // выведет «сфера» alert(text.substring(2, 5)); //отобразит «мос» alert(text.slice(2, 5)); //отобразит «мос»
А теперь разберем третий метод, который называется substr (). В нем также нужно прописывать 2 аргумента: start и length.
Первый указывает начальную позицию, а второй – количество символов, которые нужно извлечь. Чтобы отследить разницу между этими тремя инструментами, я воспользовался прошлым примером.
var text = «Атмосфера»;
alert (text.substr (2, 5)); //отобразит «мосфе»
Используя перечисленные средства взятия подстрок, можно удалить ненужные символы из новых строчных элементов, с которыми далее работает программа.
Replase ()
Данный метод помогает заменить символы и подстроки в тексте. С его помощью можно также реализовывать и глобальные замены, но для этого нужно включать регулярные выражения.
В этом примере заменится подстрока только в первом слове.
var text = "Атмосфера Атмосфера"; var newText = text.replace("Атмо","Страто") alert(newText) // Результат: Стратосфера Атмостфера
var text = «Атмосфера Атмосфера»; var newText = text.replace(«Атмо»,»Страто») alert(newText) // Результат: Стратосфера Атмостфера
А в этой программной реализации из-за флага регулярного выражения “g” будет выполнена глобальная замена.
var text = "Атмосфера Атмосфера"; var newText = text.replace(/Атмо/g,"Страто") alert(newText) // Результат: Стратосфера Стратосфера
var text = «Атмосфера Атмосфера»; var newText = text.replace(/Атмо/g,»Страто») alert(newText) // Результат: Стратосфера Стратосфера
Займемся конвертацией
В JavaScript предусмотрено только три вида преобразования типов объектов:
В текущей публикации я расскажу про 2 из них, так как знание о них нужнее для работы со строками.
Числовое преобразование
Чтобы значение элемента явно преобразовать к числовому виду, можно использовать Number (value).
Есть и более короткое выражение: +«999».
Строковая конвертация
Выполняется функцией alert, а также явным вызовом String (text).
alert (999+ " super price") var text = String(999) alert( text === "999" );
alert (999+ » super price») var text = String(999) alert( text === «999» );
На этой ноте я решил закончит свою работу. Подписывайтесь на мой блог и не забывайте делиться ссылкой на него со своими друзьями. Желаю удачи в обучении. Пока-пока!
Да, хочу читать и Я
Работа со строками в JavaScript. Строковые функции
В этой статье мы поработаем со строками в JavaScript и рассмотрим такое понятие, как длина строки (length string). Также попрактикуемся с некоторыми строковыми функциями (методами).
В JavaScript строками считаются любые текстовые данные. В этом языке нет отдельного типа «символ», как это принято в некоторых других языках программирования. Если говорить о внутреннем формате для строк — то это всегда UTF-16, причём кодировка страницы значения не имеет.
Кавычки
В языке JavaScript существуют различные типы кавычек. К примеру, мы можем создать строку, используя одинарные, двойные или обратные кавычки:
let single = 'single-quoted'; let double = "double-quoted"; let backticks = `backticks`;
И двойные, и одинарные кавычки работают, в принципе, одинаково. Что касается обратных, то тут есть пару отличий: 1) они позволяют вставлять в строку произвольные выражения, предварительно обёрнутые в $:
function sum(a, b) < return a + b; >alert(`1 + 2 = $.`); // 1 + 2 = 3. 2) они позволяют занимать более одной строки:
let guestList = `Guests: * Bob * Petr * Maria `; alert(guestList); // список гостей из нескольких строкВроде бы, всё очевидно и просто, но если мы попробуем сделать то же самое, используя двойные или одинарные кавычки, то получим ошибку.
let guestList = "Guests: // Error: Unexpected token ILLEGAL * Bob";
Но вообще, и двойные, и одинарные кавычки были в JavaScript уже давно, ещё во времена, когда потребность в многострочии была не так велика. Обратные кавычки появились позже, поэтому они более гибкие в применении и лучше соответствуют современным реалиям.
Вдобавок к вышесказанному, скажем, что обратные кавычки дают возможность задавать «шаблонные функции» (они могут применяться перед первой обратной кавычкой). Тут синтаксис следующий:
У нас автоматически вызывается функция func, получающая строку и встроенные в эту строку выражения, которые она может обработать. Если перед строкой присутствует выражение, шаблонную строку называют «теговым шаблоном». Таким образом, появляется возможность применять собственную шаблонизацию для строк, однако на деле теговые шаблоны используются нечасто.
Спецсимволы
Если мы применяем одинарные либо двойные кавычки, мы тоже можем создавать многострочные строки. Для этого понадобится символ перевода строки \n:
let guestList = "Guests:\n * Bob\n * Petr\n * Maria"; alert(guestList); // список гостей из нескольких строк
Две строки ниже являются эквивалентными. Разница в том, что они по-разному записаны:
// используем спецсимвол перевода строки let str1 = "Hello\nWorld"; // используем обратные кавычки let str2 = `Hello World`; alert(str1 == str2); // trueСуществует и масса других спецсимволов:
Рассмотрим парочку примеров с Юникодом:
// © alert( "\u00A9" ); // Длинные коды // 佫, редкий китайский иероглиф alert( "\u" ); // 😍, улыбающийся смайлик с глазами-сердечками alert( "\u" );Как правило, спецсимволы начинаются с символа экранирования, представляющего собой обратный слеш \ . Его можно использовать и для того, чтобы вставлять в строки кавычки:
alert( 'I\'m the God!' ); // I'm the God!Но экранировать нужно только тогда, когда внутри строки мы используем такие же кавычки, в которые эта самая строка заключена. Таким образом, можно поступать проще:
alert( `I'm the Walrus!` ); // I'm the Walrus!
Как видите, мы поместили строку в косые кавычки, а раздели I’m одинарной кавычкой. Просто и элегантно.
Кстати, если вдруг потребуется добавить в нашу строку сам обратный слеш, то мы экранируем его вторым обратным слешем:
alert( `The backslash: \\` ); // The backslash: \
Длина строки в JavaScript
Длину строки нам возвращает свойство length:
Так как \n является одним спецсимволом, то и длина строки получается равна трём, поэтому ошибки в коде нет.
Тут следует добавить, что length — это всё же свойство, а не функция, поэтому не нужно пытаться вызывать его путём добавления круглых скобок ( str.length() , а не str.length ). Такой вариант не сработает, ведь str.length — числовое свойство, а значит, скобки не добавляются.
Перебор строк
Если нужно посимвольно перебрать строки, используют for..of:
Изменяемы ли строки?
Нет, их содержимое изменить нельзя, когда строка создаётся, у вас не получится взять какой-нибудь символ из середины и выполнить его замену. Впрочем, давайте попробуем:
let str = 'Hi'; str[0] = 'h'; // получаем ошибку alert( str[0] ); // это не работаетНо выход есть — создаём новую строку и записываем её вместо старой в ту же переменную:
let str = 'Hi'; str = 'h' + str[1]; // меняем строку alert( str ); // hiСтроковые функции
Строковые функции (методы) упрощают работу со строками в JavaScript. Давайте посмотрим, как происходит изменение регистра с помощью строковых функций. К примеру с помощью функций toLowerCase() и toUpperCase() мы можем изменить регистр символов следующим образом:
alert( 'Interface'.toUpperCase() ); // INTERFACE alert( 'Interface'.toLowerCase() ); // interfaceТакже при необходимости мы можем выполнить перевод в нижний регистр и для какого-нибудь определённого символа:
alert( 'Interface'[0].toLowerCase() ); // 'i'Подробнее о строковых функциях поговорим в следующий раз. В частности, рассмотрим, как осуществляется поиск в строке и как работать с подстрокой. Следите за новостями!
Интересует профессиональный курс по JavaScript-разработке? Переходите по ссылке ниже:
При подготовке статьи использовались следующие материалы: — «Строки»; — «JavaScript. Строковые методы».