У меня есть следующий код в Ruby. Я хочу преобразовать этот код в JavaScript. какой эквивалентный код в JS?
text = <<"HERE"
This
Is
A
Multiline
String
HERE
У меня есть следующий код в Ruby. Я хочу преобразовать этот код в JavaScript. какой эквивалентный код в JS?
text = <<"HERE"
This
Is
A
Multiline
String
HERE
Ответы:
Обновить:
ECMAScript 6 (ES6) представляет новый тип литералов, а именно шаблонные литералы . У них много функций, среди которых переменная интерполяция, но, что важнее всего, для этого вопроса они могут быть многострочными.
Литерал шаблона отделяется обратными чертами :
(Примечание: я не рекомендую использовать HTML в строках)
Поддержка браузера в порядке , но вы можете использовать транспортеры для большей совместимости.
Оригинальный ответ ES5:
Javascript не имеет синтаксиса здесь документа. Вы можете избежать буквального перевода строки, однако, который приближается:
источник
Обновление ES6:
Как упоминается в первом ответе, с ES6 / Babel теперь вы можете создавать многострочные строки просто с помощью обратных галочек:
Интерполяция переменных - это популярная новая функция, которая поставляется со строками, разделенными обратными галочками:
Это просто приводит к объединению:
Оригинальный ответ ES5:
источник
\
`\`, это трудно заметить] и (3) хотя большинство скриптовых движков поддерживают это, это не является частью ECMAScript [т.е. почему использовать нестандартные функции?] Помните, что это руководство по стилю, которое делает код легким для чтения + сопровождения + отладки, а не просто «все работает» правильно.шаблон
text = <<"HERE" This Is A Multiline String HERE
не доступен в js (я помню, что использовал его много в старые добрые времена Perl).Для контроля над сложными или длинными многострочными строками я иногда использую шаблон массива:
или анонимный шаблон, уже показанный (escape newline), который может быть уродливым блоком в вашем коде:
Вот еще один странный, но работающий трюк 1 :
внешнее редактирование: jsfiddle
ES20xx поддерживает охватывающие строки в нескольких строках, используя строки шаблона :
1 Примечание: это будет потеряно после минимизации / запутывания вашего кода
источник
Вы можете иметь многострочные строки в чистом JavaScript.
Этот метод основан на сериализации функций, которая определяется как зависящая от реализации . Он работает в большинстве браузеров (см. Ниже), но нет гарантии, что он все еще будет работать в будущем, поэтому не полагайтесь на него.
Используя следующую функцию:
У вас могут быть вот такие документы:
Метод успешно протестирован в следующих браузерах (не упоминается = не тестировался):
Будьте осторожны с вашим миниатором. Это имеет тенденцию удалять комментарии. Для компрессора YUI комментарий начинается с
/*!
(как тот, который я использовал), будет сохранен.Я думаю, что реальным решением было бы использовать CoffeeScript .
ES6 ОБНОВЛЕНИЕ: Вы можете использовать backtick вместо создания функции с комментарием и запуска toString для комментария. Регулярное выражение должно быть обновлено, чтобы удалить только пробелы. Вы также можете иметь метод прототипа строки для этого:
Это было бы круто. Кто-то должен написать этот строковый метод .removeIndentation ...;)
источник
Ты можешь сделать это...
источник
Я придумал этот очень джимми фальсифицированный метод многорядной струны. Поскольку преобразование функции в строку также возвращает любые комментарии внутри функции, вы можете использовать комментарии в качестве строки, используя многострочный комментарий / ** /. Вы просто должны обрезать концы, и у вас есть строка.
источник
toString()
.Я удивлен, что не видел этого, потому что это работает везде, где я тестировал, и очень полезно, например, для шаблонов:
Кто-нибудь знает о среде, где есть HTML, но он не работает?
источник
Я решил эту проблему, выведя div, сделав его скрытым, и вызвав div id с помощью jQuery, когда мне это нужно.
например
Затем, когда мне нужно получить строку, я просто использую следующий jQuery:
Который возвращает мой текст в несколько строк. Если я позвоню
Я получил:
источник
display:none
контент, скорее всего, из-за популярности интерфейсов в стиле JavaScript. (Например, страница часто задаваемых вопросов с функцией скрытия / показа.) Вы должны быть осторожны, потому что Google говорит, что они могут наказать вас, если скрытый контент, похоже, предназначен для искусственного завышения вашего рейтинга SEO.Есть несколько способов добиться этого
1. Конкатенация косой черты
2. регулярная конкатенация
3. Массив Присоединение конкатенации
С точки зрения производительности конкатенация Slash (первая) - самая быстрая.
Обратитесь к этому тесту для получения более подробной информации о производительности
Обновить:
С ES2015 мы можем воспользоваться его функцией «Шаблонные строки». С этим нам просто нужно использовать обратные галочки для создания многострочных строк
Пример:
источник
Использование тегов скрипта:
<script>...</script>
блок, содержащий ваш многострочный текст вhead
тег;получить ваш многострочный текст как есть ... (обратите внимание на кодировку текста: UTF-8, ASCII)
источник
xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
Я не помню, чтобы у меня были другие проблемы, кроме неправильного ввода комментариев в JS. Пространства, где нет проблем.Мне нравится этот синтаксис и неопределенность:
(но на самом деле не может рассматриваться как многострочная строка)
источник
Вот эта библиотека, которая делает ее красивой:
https://github.com/sindresorhus/multiline
Перед
После
источник
nodejs
использовании в браузере должна быть полезной.Function.prototype.String()
.Downvoters : этот код предоставляется только для информации.
Это было проверено в Fx 19 и Chrome 24 на Mac
DEMO
источник
Подводя итог, я попробовал 2 подхода, перечисленных здесь в пользовательском программировании JavaScript (Opera 11.01):
Поэтому я рекомендую рабочий подход для пользователей Opera JS. В отличие от того, что автор говорил:
Это работает в Opera 11. По крайней мере, в пользовательских скриптах JS. Жаль, что я не могу комментировать отдельные ответы или ставить ответ, я бы сделал это немедленно. Если возможно, кто-то с более высокими привилегиями, пожалуйста, сделайте это для меня.
источник
Мое расширение на https://stackoverflow.com/a/15558082/80404 . Ожидается комментарий в виде
/*! any multiline comment */
символа! используется для предотвращения удаления с помощью минификации (по крайней мере, для компрессора YUI)Пример:
источник
Обновлен в 2015 году : сейчас шесть лет спустя: большинство людей используют загрузчик модулей, и у каждой из основных систем модулей есть способы загрузки шаблонов. Он не встроенный, но наиболее распространенным типом многострочных строк являются шаблоны, и шаблоны в любом случае должны вообще храниться вне JS .
require.js: 'требуют текст'.
Использование require.js 'text' плагина с многострочным шаблоном в template.html
NPM / browserify: модуль 'brfs'
Browserify использует модуль 'brfs' для загрузки текстовых файлов. Это фактически встроит ваш шаблон в ваш связанный HTML.
Легко.
источник
Если вы хотите использовать экранированные символы новой строки, их можно использовать красиво . Это выглядит как документ с рамкой страницы .
источник
Эквивалент в javascript:
Вот спецификация . Смотрите поддержку браузера внизу этой страницы . Вот несколько примеров .
источник
Это работает в IE, Safari, Chrome и Firefox:
источник
Вы можете использовать TypeScript (JavaScript SuperSet), он поддерживает многострочные строки и переносится обратно в чистый JavaScript без дополнительных затрат:
Если вы хотите сделать то же самое с простым JavaScript:
Обратите внимание, что iPad / Safari не поддерживает
'functionName.toString()'
Если у вас много устаревшего кода, вы также можете использовать простой вариант JavaScript в TypeScript (для очистки):
и вы можете использовать многострочный строковый объект из простого варианта JavaScript, где вы помещаете шаблоны в другой файл (который вы можете объединить в комплекте).
Вы можете попробовать TypeScript на
http://www.typescriptlang.org/Playground
источник
ES6 может сделать это, используя литералы шаблонов:
Больше ссылки здесь
источник
ES6 позволяет использовать обратную галочку для указания строки в несколько строк. Это называется литералом шаблона. Нравится:
Использование backtick работает в NodeJS и поддерживается Chrome, Firefox, Edge, Safari и Opera.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals
источник
Самый простой способ создания многострочных строк в Javascrips - использование обратных галочек (``). Это позволяет создавать многострочные строки, в которые можно вставлять переменные с помощью
${variableName}
.Пример:
совместимость:
ES6
//es2015
Точную совместимость с документами Mozilla можно узнать здесь
источник
Моя версия объединения на основе массива для строки concat:
Это хорошо сработало для меня, тем более что я часто вставляю значения в html, построенный таким образом. Но у этого есть много ограничений. Отступ был бы хорош. Не иметь дело с вложенными кавычками было бы очень хорошо, и только громоздкость этого беспокоит меня.
Занимает ли .push () добавление в массив много времени? Смотрите этот связанный ответ:
( Есть ли причина, по которой разработчики JavaScript не используют Array.push ()? )
Посмотрев на эти (противоположные) тестовые прогоны, похоже, что .push () подходит для строковых массивов, которые вряд ли вырастут более чем на 100 элементов - я буду избегать этого в пользу индексированных надстроек для больших массивов.
источник
Вы можете использовать
+=
для объединения вашей строки, кажется, что никто не ответил на это, что будет читабельным, а также аккуратным ... что-то вроде этогоможно также записать как
источник
Также обратите внимание, что при расширении строки на несколько строк с использованием обратной косой черты в конце каждой строки любые дополнительные символы (в основном пробелы, табуляции и комментарии, добавленные по ошибке) после обратной косой черты вызовут непредвиденную ошибку символа, которую я нашел в течение часа, чтобы найти вне
источник
Пожалуйста, из-за любви к Интернету используйте конкатенацию строк и не используйте для этого решения ES6. ES6 НЕ поддерживается повсеместно, во многом как CSS3 и некоторые браузеры медленно адаптируются к движению CSS3. Используйте обычный старый JavaScript, ваши конечные пользователи будут вам благодарны.
Пример:
var str = "This world is neither flat nor round. "+ "Once was lost will be found";
источник
Вы должны использовать оператор конкатенации '+'.
При использовании
\n
вашего исходного кода будет выглядеть так -При использовании
<br>
вашего браузера вывод будет выглядеть так:источник
Я думаю, что этот обходной путь должен работать в IE, Chrome, Firefox, Safari, Opera -
Используя jQuery :
Используя Чистый Javascript:
Ура !!
источник
<xmp>
так устарела. Это может быть разрешено в HTML, но не должно использоваться любыми авторами. См. Stackoverflow.com/questions/8307846/…<pre>;
с escape-символами не поможет в моем решении ... Сегодня я столкнулся с подобной проблемой и пытался найти обходной путь ... но в моем случае я нашел один очень хороший способ исправить эту проблему путем: положить вывод в html-комментариях вместо <xmp> или любого другого тега. лол. Я знаю, что это не стандартный способ сделать это, но я буду работать над этим вопросом больше завтра утром .. Ура!style="display:none"
Chrome пытается загрузить любые<img>
изображения, упомянутые в примере блока.Просто попробовал анонимный ответ и обнаружил, что здесь есть небольшая хитрость, она не работает, если после обратной косой черты есть пробел,
\
поэтому следующее решение не работает:
Но когда пространство удаляется, это работает -
Надеюсь, поможет !!
источник