This page was translated from English by the community.Learn more and join the MDN Web Docs community.
Работа с текстом — строки в JavaScript
Теперь мы обратим внимание на строки — в программировании так называют части текста. В этой статье мы рассмотрим все распространённые вещи, которые вы должны действительно знать о строках при изучении JavaScript, например, создание строк, экранирование кавычек в строках и объединение строк вместе.
| Необходимые навыки: | Базовая компьютерная грамотность, базовое понимание HTML и CSS, понимание что такое JavaScript. |
|---|---|
| Цель: | Знакомство с основами строк в JavaScript. |
In this article
Сила слов
Слова очень важны для людей — это основа нашего общения. Интернет представляет собой преимущественно текстовую среду, предназначенную для того что бы люди общались и делились информацией, поэтому нам полезно иметь контроль над словами, которые появляются в нем.HTML предоставляет визуальную и смысловую структуру для нашего текста,CSS позволяет нам стилизовать его, а JavaScript содержит ряд функций для управления строками, создания пользовательских приветственных сообщений, при необходимости отображая нужные текстовые метки, сортируя элементы в желаемом порядке и многое другое.
Практически во всех программах, которые мы показали вам на данный момент, были задействованы некоторые манипуляции со строками.
Строки — основы
С первого взгляда строки обрабатываются аналогично числам, но если копнуть глубже, вы увидите некоторые заметные отличия. Давайте начнём с ввода некоторых основных строк вконсоль разработчика, чтобы познакомиться с ними.
Создание строки
Для начала введите следующие строки:
jsconst string = "Революция не будет транслироваться по телевидению.";string;Как и в случае с числами, мы объявляем переменную, инициализируя её строковым значением, а затем возвращаем значение. Единственное различие здесь в том, что при написании строки вам нужно окружить значение кавычками.
Если вы не сделаете этого или пропустите одну из кавычек, вы получите сообщение об ошибке. Попробуйте ввести следующие строки:
jsconst badString = Тест;const badString = 'Тест;const badString = Тест';Эти строки не работают, потому что любая текстовая строка без кавычек считается именем переменной, именем свойства, зарезервированным словом или чем-то подобным. Если браузер не может найти его, возникает ошибка (например, «missing, before statement»). Если браузер может видеть, где начинается строка, но не может найти конец строки, как указано во 2-й строке, она жалуется на ошибку (с «unterminated string literal»). Если ваша программа выявляет такие ошибки, вернитесь назад и проверьте все свои строки, чтобы убедиться, что у вас нет пропущенных кавычек.
Следующий код будет выполнен только в том случае, если ранее была объявлена переменная
string— убедитесь сами:jsconst badString = string;badString;В настоящее время строка
badStringимеет то же значение, что и строкаstring.
Одиночные кавычки vs. Двойные кавычки
В JavaScript вы можете выбрать одинарные кавычки или двойные кавычки, чтобы обернуть ваши строки. Оба варианта будут работать нормально:
jsconst sgl = "Одиночные кавычки.";const dbl = "Двойные кавычки.";sgl;dbl;Существует очень мало различий между одиночными и двойными кавычками, и решение какие из них использовать в коде остаётся на ваше усмотрение. Однако вы должны выбрать один вариант и придерживаться его, иначе ваш код может выдать ошибку, особенно если вы используете разные кавычки в одной строке! Ниже приведён пример:
jsconst badQuotes = 'Что происходит?";Браузер будет считать, что строка не была закрыта, потому что в строке может появиться другой тип цитаты, который вы не используете, чтобы хранить ваши строки в переменных. Из примера можно понять, о чем идёт речь (в коде ошибок нет):
jsconst sglDbl = 'Я не сказала "да", милорд…';const dblSgl = "Вы не сказали 'нет'… (королева, Бэкингем)";sglDbl;dblSgl;Однако вы не можете включить один и тот же знак кавычки внутри строки, если он используется для их хранения. Ниже приведена ошибка, браузер ошибочно определяет место, где строка кончается:
jsconst bigmouth = 'Жанна Д'Арк — народная героиня Франции.';Что приводит нас к следующей теме.
Экранирование кавычек в строках
Чтобы исправить нашу предыдущую строку кода, нам нужно дать понять браузеру, что кавычка в середине строки не является меткой её конца. Экранирование символов означает, что мы делаем что-то с ними, чтобы убедиться, что они распознаются как текст, а не часть кода. В JavaScript мы делаем это, помещая обратную косую черту непосредственно перед символом. Введите эти строки:
const bigmouth = "Жанна Д'Арк — народная героиня Франции.";bigmouth;Так лучше. Таким же образом можно экранировать и другие символы, например"\. Кроме того существуют специальные коды. Для дополнительной информации см.Escape notation.
Конкатенация строк
Конкатенация — это новомодное программистское слово, которое означает «объединить». Объединение строк в JavaScript использует оператор плюс (+), тот же, который мы используем для сложения чисел, но в этом контексте он делает кое-что другое. Попробуем пример в нашей консоли.
jsconst one = "Привет, ";const two = "как дела?";const joined = one + two;joined;Результат этой программы - это переменная
joined, содержащая значение "Привет, как дела?".В последнем случае мы просто объединим две строки вместе, но на самом деле, вы можете объединить столько строк, сколько хотите, до тех пор, пока вы ставите
+между ними. Попробуйте это:jsconst multiple = one + one + one + one + two;multiple;Вы также можете использовать сочетание переменных и фактических строк. Попробуйте это:
jsconst response = one + "Я в порядке — " + two;response;
Примечание:Когда вы вводите фактическую строку в свой код, заключённую в одинарные или двойные кавычки, она называетсястроковым литералом.
Конкатенация строк в контексте
Давайте посмотрим на конкатенацию строк в действии — вот пример из предыдущего курса:
<button>Press me</button>const button = document.querySelector("button");button.onclick = function () { const name = prompt("Как тебя зовут?"); alert("Привет, " + name + ", рад тебя видеть!");};Здесь мы используем функциюWindow.prompt () в строке 4, которая просит пользователя ответить на вопрос через всплывающее диалоговое окно, а затем сохраняет введённый текст внутри заданной переменной — в этом случаеname. Затем мы используем функциюWindow.alert () в строке 5 для отображения другого всплывающего окна, содержащего строку, которую мы собрали из двух строковых литералов и переменнойname.
Числа vs. строки
Итак, что происходит, когда мы пытаемся добавить (или конкатенировать) строку и число? Попробуем это в нашей консоли:
js"Front " + 242;Вы можете ожидать, что это вызовет ошибку, но все работает отлично. Попытка представить строку как число на самом деле не имеет смысла, но число как строку — имеет, поэтому браузер довольно умно преобразует число в строку и объединяет две строки вместе.
Вы даже можете сделать это с двумя числами, вы можете заставить число стать строкой, обернув её в кавычки. Попробуйте следующее (мы используем оператор
typeofдля того, чтобы установить является ли переменная числом или строкой):jsconst myDate = "19" + "67";typeof myDate;Если у вас есть числовая переменная, которую вы хотите преобразовать в строчную без внесения каких-либо иных изменений или строковую переменную, которую вы хотите преобразовать в число, вы можете использовать следующие две конструкции:
Объект
Numberпреобразует всё переданное в него в число, если это возможно. Попробуйте следующее:jsconst myString = "123";const myNum = Number(myString);typeof myNum;С другой стороны, каждое число имеет метод, называемый
toString(), который преобразует его в эквивалентную строку. Попробуй это:jsconst myNum = 123;const myString = myNum.toString();console.log(typeof myString);
Эти конструкции могут быть действительно полезны в некоторых ситуациях. Например, если пользователь вводит число в текстовое поле формы, данные будут распознаны как строка. Однако, если вы хотите добавить это число к чему-то, вам понадобится его значение, поэтому вы можете передать его черезNumber(), чтобы справиться с этим. Именно это мы сделали в нашейNumber Guessing Game, в строке 59.
Совмещение строк с различными выражениями
Вы можете совмещать выражения JavaScript в литералы шаблона, а также простые переменные, и результаты будут включены в конечную строку:
const song = "Fight the Youth";const score = 9;const highestScore = 10;const output = `Мне нравится песня ${song}. Я оценил её на ${ (score / highestScore) * 100}%.`;console.log(output); // "Мне нравится песня Fight the Youth. Я оценил её на 90%."Многострочный текст
Литералы шаблона учитывают разрывы строк в исходном коде, поэтому вы можете писать текст в несколько строчек, например:
const output = `Мне нравится эта песня. Я оценил её на 90%.`;console.log(output);/* Мне нравится эта песня. Я оценил её на 90%. */Чтобы получить эквивалентный вывод с использованием обычной строки, вам придется включить в строку символы переноса строки (\n):
const output = "Мне нравится эта песня.\nЯ оценил её на 90%.";console.log(output);/* Мне нравится эта песня. Я оценил её на 90%. */Смотри нашу справочную страницулитералов шаблонов для получения дополнительных примеров и подробной информации о расширенных функциях.
Заключение
Итак, это основы строк, используемых в JavaScript. В следующей статье мы рассмотрим некоторые из встроенных методов, доступных для строк в JavaScript и то, как мы можем использовать их для управления нашими строками только в той форме, в которой мы хотим.