Как сделать перенос строки в js
Строкой считается любая последовательность символов в пределах двойных или одинарных кавычек.
Для создания строки с кавычками, нужно их экранировать (обособить) с помощью символа обратный слэш \ или использовать два разных вида кавычек.
Помимо двойных и одинарных кавычек, экранизации подлежат и другие символы (escape последовательности), управляющие форматированием текста.
Символ | Обозначение |
---|---|
\' | одинарная кавычка |
\'' | двойная кавычка |
\\ | обратный слэш (не путать с // - знаком начала комментария) |
\n | новая строка (работает как кнопка Enter) |
\r | возврат каретки в начало строки (работает как кнопка Home) |
\t | табуляция (работает как кнопка Tab) |
\b | удаление символа (работает как кнопка Backspace) |
\f | печать с новой страницы (устаревшее) |
\v | вертикальная табуляция (устаревшее) |
\a | звуковой сигнал (устаревшее) |
\xXX | символ из Latin-1, где XX шестнадцатеричные цифры (например: \xAF - символ '-') |
\XXX | символ из Latin-1, где XXX восьмеричные цифры от 1 до 377 (например: \300 - символ 'À') |
\ucXXXX | символ из Unicode, где XXXX шестнадцатеричные цифры (например: \uc454 - символ '쑔') |
В случае если строка достаточно длинная, то для более легкого чтения ее можно разбить на подстроки с помощью символа обратного слэша \ , не нарушая при этом самой структуры строки.
Это руководство предназначено для того, чтобы охватить всё, что вам нужно знать о работе со строками в JavaScript.
Создание строк
По сути, в JavaScript есть две категории строк: строковые примитивы и объекты String.
Примитивы
Строковые примитивы создаются следующими способами:
Почти во всех случаях вы должны использовать один из этих методов для создания новой строки.
Объекты
Вы можете создать объект String, используя ключевое слово new .
Единственное реальное преимущество объекта перед строковым примитивом состоит в том, что вы можете назначить ему дополнительные свойства:
Однако очень мало случаев, когда это полезно. Практически во всех случаях следует создавать строковый примитив.
Все знакомые вам методы строк являются частью объекта String, а не примитива.
Когда вы вызываете метод для строкового примитива, JavaScript оборачивает примитив в String-объект и вызывает метод этого объекта.
Шаблонные строки
Базовые шаблонные строки
Шаблонные строки позволяют объединять переменные и текст в новую строку с использованием более удобочитаемого синтаксиса.
25 декабря 2021 – 25 февраля 2022, Онлайн, Беcплатно
Вместо двойных или одинарных кавычек заключите строку в обратные кавычки и вставьте переменные, используя синтаксис $
Вы также можете включать выражения в шаблонные строки:
Сейчас браузеры очень хорошо поддерживают работу с шаблонными строками в JavaScript.
Вы также можете вкладывать шаблоны друг в друга, как показано в этом примере из MDN:
Теговые шаблоны
Теговые шаблоны позволяют создать функцию, которая парсит шаблонную строку.
Это может быть действительно мощным инструментом и наиболее наглядно демонстрируется на примере:
Представьте, что у нас есть функция censor() , которая удаляет любые оскорбительные слова в строке, введенной пользователем.
Когда мы хотим подвергнуть строку цензуре, мы можем вручную вызвать censor() для каждого введенного пользователем значения:
Или мы могли бы использовать теговые шаблоны.
Это позволяет нам написать функцию, которая принимает строковые значения из шаблонной строки и все выражения, используемые в шаблоне:
Это означает, что теперь мы можем управлять шаблонной строкой и значениями внутри неё.
Теперь у нас есть доступ к шаблонной строке и отдельным аргументам. Мы можем отслеживать каждую переменную, используемую в строке:
Наконец, наша теговая функция должна вернуть обработанную строку.
Для этого мы просто объединяем исходный массив строк и массив (измененных) входных данных в новый массив.
Здесь мы делаем это с помощью .reduce() :
Наша теговая функция теперь готова, и ее можно использовать везде, где нам нужно цензурировать вводимые пользователем данные:
Теговая функция не обязательно должна возвращать строку.
Например, есть библиотеки для React, которые принимают шаблонную строку и возвращают компонент React.
Raw-строки в JavaScript
String.raw — это предопределенная теговая функция.
Она позволяет вам получить доступ к строке без обработки каких-либо значений после обратного слэша.
Например, при использовании строки, содержащей \ n с String.raw , вместо получения новой строки вы получите фактические символы \ и n :
Это может быть полезно (помимо прочего) для написания строк, в которых вам обычно приходится избегать большого количества символов обратного слэша, таких как пути к файлам:
При использовании string.raw символ \ экранирует последнюю обратную кавычку.
Это означает, что вы не можете заканчивать raw-строку символом \ следующим образом:
Объединение строк
Конкатенация строк
Этот подход также можно использовать для разделения создания строки на несколько строк для удобства чтения:
Вы также можете объединять строки с переменными (нестроковые переменные будут преобразованы в строки):
Чтобы создать новую строку, добавив ее в конец существующей, используйте += :
Вы также можете объединить строки и переменные с помощью метода string.concat(), но это не рекомендуется по соображениям производительности.
Вместо этого используйте операторы + или += как показано выше
Повторение строки
Метод repeat() в JavaScript возвращает новую строку, содержащую исходную строку, повторяющуюся несколько раз.
Вы можете использовать string.repeat() в следующих браузерах:
Объединение строк
Вы можете объединить массив строк в одну, используя метод .join() для массива.
По умолчанию элементы разделяются запятой:
Вы также можете указать строку, используемую для разделения элементов:
Передача пустой строки в string.join объединит элементы, между которыми ничего нет:
Когда toString() используется в массиве, он также возвращает список строк, разделенных запятыми.
Разделение строки
Вы можете разделить строку на массив с помощью метода split() .
Типичные варианты использования:
Превращаем предложение в массив слов, разбивая его по пробелам:
… или разделение многострочной строки на отдельные строки:
Вы также можете ограничить количество элементов, которые вы хотите вернуть из split() , передав необязательный второй параметр:
В современных браузерах вместо этого можно использовать spread-оператор:
Сравнение строк
Равенство
Как вы знаете, что сравнивая два строковых примитива, вы можете использовать операторы == или === :
Если вы сравниваете строковый примитив с чем-то, что не является строкой, == и === ведут себя по-разному.
При использовании оператора == не-строка будет преобразована в строку. Это означает, что JavaScript попытается преобразовать его в строку перед сравнением значений.
Для строгого сравнения, когда не-строки не приводятся к строкам, используйте === :
То же самое верно и для операторов неравенства != и !== :
Если вы не знаете, что использовать, отдавайте предпочтение строгому равенству === .
При использовании объектов String два объекта с одинаковым значением не считаются равными строками в JavaScript:
Чувствительность к регистру
Когда требуется сравнение без учета регистра, обычно преобразуют обе строки в верхний или нижний регистры и сравнивают результат.
Однако иногда вам нужно больше контроля над сравнением. Об этом в следующем разделе …
Работа с диакритическими знаками в строках JavaScript
Диакритические знаки — это модификации буквы, например é или ž.
Возможно вы захотите указать, как они обрабатываются при сравнении двух строк.
Например, в некоторых языках принято исключать акценты при написании прописных букв.
Если вам нужно сравнение без учета регистра, простое преобразование двух строк в один и тот же регистр с помощью toUpperCase() или toLowerCase() не будет учитывать добавление / удаление акцентов и может не дать ожидаемого результата.
Поддержка localeCompare() браузерами:
Больше / меньше
Это означает, что они сравниваются по буквам в том порядке, в котором они появляются в словаре:
При сравнении строк с использованием строчные буквы считаются большими, чем прописные.
Это происходит потому, что JavaScript использует значение каждого символа в Unicode, где строчные буквы идут после прописных.
True или false строки
Пустые строки в JavaScript считаются равными false при сравнении с использованием оператора == (но не при использовании === )
Сортировка строк
Простой Array.sort()
Самый простой способ отсортировать массив строк — использовать метод Array.sort() :
Вы можете избежать такого поведения, сначала преобразовав все строки в один и тот же регистр, или используя localeCompare (см. ниже), что обычно более эффективно.
localeCompare
Использование localeCompare в качестве функции сортировки позволяет сравнивать строки без учета регистра:
Многострочные строки
Вы можете добавлять новые строки, используя \n :
В шаблонной строке новые строки учитываются внутри обратных кавычек:
В шаблонных строках вы можете избежать разрывов строки, добавив \ в конце строки.
Отступы в строках
Вы можете добавить пробел в начало или конец строки, пока она не достигнет указанной длины, используя padStart() или padEnd() :
Вместо пробела вы можете дополнить целевую строку другой строкой, передав ее в качестве второго параметра.
Эта строка будет повторяться до тех пор, пока не будет достигнута целевая длина (строка будет обрезана, если она не помещается):
Поддержка padStart() и padEnd() браузерами::
Извлечение части строки
Подстроки
Эти методы принимают индекс первого символа, который вы хотите извлечь из строки.
Они возвращают все от этого символа до конца строки:
Второй (необязательный) аргумент — это символ, на котором вы хотите остановиться.
Этот последний символ не включается в вывод:
Итак, какой из них вы должны использовать?
Они очень похожи, но с небольшими отличиями:
Также существует метод substr(), похожий на slice() и substring().
Это устаревший API. Хотя вряд ли он будет использоваться в ближайшее время, для работы со строками в JavaScript вам следует использовать один из двух вышеупомянутых методов, где это возможно.
Одиночные символы
Метод charAt() возвращает определенный символ из строки (помните, что индексы начинаются с 0):
Вы также можете рассматривать строку как массив и обращаться к ней напрямую следующим образом:
Доступ к строке как к массиву может привести к путанице, когда строка хранится в переменной.
Использование charAt () более явное:
Изменение регистра строки в JavaScript
Вы можете сделать строку с заглавными буквами следующим образом:
Или все в нижнем регистре, например:
Эти методы обычно используются для преобразования двух строк в верхний / нижний регистр, чтобы выполнить их сравнение без учета регистра.
В зависимости от сравниваемых строк вам может потребоваться больший контроль над сравнением. Вместо этого рассмотрите возможность использования localeCompare.
Удаление пробелов
Следующие методы удаляют все пробелы, табуляции, неразрывные пробелы и символы окончания строки (например, \n ) из соответствующей части строки:
Поиск текста в строке
Найти позицию подстроки
Вы можете искать строку внутри другой строки в JavaScript с помощью indexOf() .
Этот метод вернет позицию первого упоминания искомой подстроки в строке или -1 , если подстрока не найдена:
Вы также можете использовать метод регулярных выражений search() , чтобы сделать то же самое:
Чтобы найти последнее вхождение поискового запроса, используйте lastIndexOf() :
Все эти методы вернут -1 , если подстрока не найдена в целевой строке.
Начинается с / заканчивается на
Вы можете использовать методы indexOf() , указанные выше, чтобы проверить, начинается ли строка с поискового запроса или заканчивается им.
Однако ES6 добавил для этого специальные методы:
Поддержка startsWith() и endsWith() браузерами:
Includes
Если вам не важна конкретная позиция подстроки и важно только, находится ли она вообще в целевой строке, вы можете использовать includes() :
Поддержка includes() браузерами:
Регулярные выражения
Чтобы найти первое совпадение регулярного выражения, используйте .search() .
Чтобы вернуть массив, содержащий все совпадения регулярного выражения, используйте match() с модификатором /g (global):
(использование match() без модификатора /g вернет только первое совпадение и некоторые дополнительные свойства, такие как индекс результата в исходной строке и любые именованные группы захвата)
Если вам нужна дополнительная информация о каждом совпадении, включая их индекс в исходной строке, вы можете использовать matchAll .
Этот метод возвращает итератор, поэтому вы можете использовать цикл for … of для результатов. Вы должны использовать регулярное выражение с модификатором /g/ в matchAll() :
Замена символов в строке
Вы можете использовать replace() для замены определенного текста в строке.
Первый аргумент replace() — это текст, который нужно найти и заменить, второй — текст, которым его нужно заменить.
Передача строки в качестве первого аргумента заменяет только первое совпадение:
Если вы хотите заменить все совпадения, вы можете передать регулярное выражение с модификатором ‘greedy’ ( /g ) в качестве первого аргумента:
и n универсальная последовательность символов новой строки в Javascript для всех платформ? Если нет, то как определить символ для текущей среды?
Я не спрашиваю об элементе HTML newline (
). Я спрашиваю о последовательности символов новой строки, используемой в строках JavaScript.
Да, она универсальна.
хотя '\n' - Это универсальный новая строка символы, вы должны иметь в виду, что, в зависимости от вашего ввода, новые символы строки могут предшествовать символам возврата каретки ( '\r' ).
Не используйте \n, просто попробуйте это:
просто введите обратную косую черту и продолжай в том же духе! Работает как шарм.
было бы проще всего просто обрабатывать все случаи нового символа строки, а не проверять, какой случай, а затем применять его. Например, если вам нужно заменить новую строку, выполните следующие действия:
да использовать \n, если вы не генерируете html-код, в котором вы хотите использовать
функция электронной почты ссылка я использую "%0D%0A"
получить разделитель строк для текущего браузера:
Примечание-при использовании ExtendScript JavaScript (язык сценариев Adobe, используемый в таких приложениях, как Photoshop CS3+), используется символ "\r". "\n " будет интерпретироваться как символ шрифта, и многие шрифты, таким образом, будут иметь символ блока вместо этого.
например (чтобы выбрать слой с именем 'Note' и добавить каналы строк после всех периодов):
в ответ Nilay выше (я не могу комментировать, не хватает репутации):
кто-нибудь знает этот тип кода для клавиши tab? я пробовал "%0D % 09 " но не работать. - Нилай 26 '15 сентября в 13:57
Tab-это один символ, так что если вы попробуете просто %09 это должно быть хорошо. Пример для просмотра отдельных кодов символов:
У меня была проблема выражения строку с \n или \r\n.
Волшебный персонаж \r который используется для возврата каретки работал для меня, как строки.
Поэтому в некоторых случаях полезно рассмотреть \r тоже.
вы можете использовать ` кавычки (которые находятся ниже кнопки Esc) с ES6. Так что вы можете написать что-то вроде этого:
Я считаю, что это -- когда вы работаете со строками JS.
Если вы создаете HTML, хотя, вам придется использовать
теги (не \n , так как вы больше не имеете дело с JS)
Является ли \n универсальной последовательностью символов новой строки в Javascript для всех платформ? Если нет, как мне определить характер для текущей среды?
Я не спрашиваю об элементе новой строки HTML (
). Я спрашиваю о последовательности символов новой строки, используемой в строках JavaScript.
Я только что протестировал несколько браузеров, использующих этот глупый кусочек JavaScript:
IE8 и Opera 9 в Windows используют \r\n . Все остальные протестированные мной браузеры (Safari 4 и Firefox 3.5 в Windows и Firefox 3.0 в Linux) используют \n . Все они могут нормально обрабатывать \n при установке значения, хотя IE и Opera снова конвертируют его обратно в \r\n внутри. Есть статья SitePoint с некоторыми подробностями, которая называется Окончание строк в Javascript.
Также обратите внимание, что это не зависит от фактических концов строк в самом файле HTML (и \n , и \r\n дают одинаковые результаты).
При отправке формы все браузеры канонизируют переводы строк в %0D%0A в кодировке URL. Чтобы увидеть это, загрузите, например, data:text/html, и нажмите кнопку отправки. (Некоторые браузеры блокируют загрузку отправленной страницы, но вы можете увидеть значения формы в кодировке URL в консоли.)
Я не думаю, что вам действительно нужно делать что-то определенное. Если вы просто хотите разделить текст на новые строки, вы можете сделать что-то вроде этого:
Получите разделитель строк для текущего браузера:
Вы можете использовать
и document.write/ , document.writeln .
У меня была проблема с выражением новой строки с помощью \ n или \ r \ n .
Волшебным образом символ \ r , который используется для возврата каретки, работал для меня как новая строка.
Так что в некоторых случаях полезно рассмотреть \ r тоже.
Да используйте \ n, если вы не генерируете HTML-код, в котором вы хотите использовать
Да, это универсально.
Хотя '\n' является универсальным символом новой строки , вы должны иметь в виду, что в зависимости от введенного вами символа новой строки могут предшествовать символы возврата каретки ( '\r' ).
Не используйте "\ n". Просто попробуйте это:
Просто введите обратную косую черту и продолжайте движение! Работает как шарм.
Практическое наблюдение . В моем скрипте NodeJS у меня есть следующая функция:
Может быть проще всего обработать все случаи символа новой строки вместо проверки, в каком случае применять его. Например, если вам нужно заменить символ новой строки, выполните следующие действия:
\n отлично подходит для всех случаев, с которыми я сталкивался. Если вы работаете с сетью, используйте \n и не беспокойтесь об этом (если только у вас не было проблем, связанных с переводом строки).
Вы можете использовать `` цитаты (которые находятся ниже кнопки Esc) с ES6. Таким образом, вы можете написать что-то вроде этого:
Я считаю, что это - когда вы работаете со строками JS.
Однако, если вы генерируете HTML, вам придется использовать теги
(не \n , поскольку вы больше не имеете дело с JS)
Читайте также: