Как присвоить многострочную строку переменной?
Как мне преобразовать этот Ruby код с многострочной строкой в JavaScript?
text = <<"HERE"
Это
Многострочная
Строка
HERE
5 ответ(ов)
Вы можете сделать это следующим образом:
var string = 'Это многострочная\n' +
'строка, которая\n' +
'содержит несколько\n' +
'строк.';
Это создает строку, состоящую из нескольких строк, объединяя их с помощью оператора +
. Также вы можете использовать ES6 шаблонные строки для более удобного синтаксиса:
var string = `Это многострочная
строка, которая
содержит несколько
строк.`;
Таким образом, вы можете избежать использования символа \n
и просто написать текст так, как он должен выглядеть.
Вы можете создать многострочную строку, используя метод, который немного «халтурный», но работает. При преобразовании функции в строку также возвращаются все комментарии внутри функции. Это открывает возможность использовать многострочный комментарий /* ... */
как строку. Вам просто нужно обрезать начало и конец строки, чтобы получить нужный результат.
Вот пример кода:
var myString = function(){/*
Это многострочная строка,
созданная с использованием комментария
внутри функции, который возвращается как строка.
Наслаждайтесь этой «халтурной» реализацией.
*/}.toString().slice(14, -3);
alert(myString);
В этом примере вы определяете функцию, внутри которой имеется многострочный комментарий. Затем, преобразуя функцию в строку с помощью .toString()
, вы получаете доступ к содержимому комментария, после чего обрезаете лишние символы для получения чистой строки.
Я удивлён, что я не заметил этого, потому что оно работает везде, где я его тестировал, и является очень полезным для, например, шаблонов:
<script type="bogus" id="multi">
Моя
многострочная
строка
</script>
<script>
alert($('#multi').html());
</script>
Знает ли кто-нибудь о среде, где есть HTML, но это не работает?
Чтобы использовать <script>
теги для извлечения многострочного текста, выполните следующие шаги:
- Добавьте блок
<script>...</script>
с вашим многострочным текстом в тег<head>
. - Получите ваш многострочный текст в неизмененном виде, учитывая, что необходимо следить за кодировкой текста (UTF-8, ASCII).
Пример кода:
<script>
// чистый JavaScript
var text = document.getElementById("mySoapMessage").innerHTML;
// использование jQuery для безопасного выполнения после загрузки документа
$(document).ready(function() {
var text = $("#mySoapMessage").html();
});
</script>
<script id="mySoapMessage" type="text/plain">
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:typ="...">
<soapenv:Header/>
<soapenv:Body>
<typ:getConvocadosElement>
...
</typ:getConvocadosElement>
</soapenv:Body>
</soapenv:Envelope>
<!-- этот комментарий будет присутствовать в вашей строке -->
// о-о, комментарии JavaScript... запрос SOAP не сработает
</script>
Обратите внимание, что комментарии JavaScript не должны присутствовать внутри вашего многострочного текста, так как это может привести к ошибке при отправке запроса SOAP.
Вам нравится такой синтаксис и использование отступов:
string = 'my long string...\n' \
+ 'continue here\n' \
+ 'and here.'
К сожалению, в Python такой способ не считается истинной мультстрокой, поскольку он использует оператор конкатенации (+
). Если вы хотите использовать настоящую мультстроку, вы можете воспользоваться тройными кавычками:
string = '''my long string...
continue here
and here.'''
Но стоит заметить, что в этом случае сохраняются все символы новой строки, так что если это не подходит, то используйте первый вариант с конкатенацией.
Преобразование объекта JS в строку JSON
Преобразование объекта в строку
Как написать многострочные строки в Go?
Как преобразовать строку, разделённую запятыми, в массив?
Как узнать, содержится ли определенная строка в массиве на JavaScript/jQuery?