35

Как присвоить многострочную строку переменной?

8

Как мне преобразовать этот Ruby код с многострочной строкой в JavaScript?

text = <<"HERE"
Это
Многострочная
Строка
HERE

5 ответ(ов)

2

Вы можете сделать это следующим образом:

var string = 'Это многострочная\n' + 
'строка, которая\n' + 
'содержит несколько\n' + 
'строк.';

Это создает строку, состоящую из нескольких строк, объединяя их с помощью оператора +. Также вы можете использовать ES6 шаблонные строки для более удобного синтаксиса:

var string = `Это многострочная
строка, которая
содержит несколько
строк.`;

Таким образом, вы можете избежать использования символа \n и просто написать текст так, как он должен выглядеть.

1

Вы можете создать многострочную строку, используя метод, который немного «халтурный», но работает. При преобразовании функции в строку также возвращаются все комментарии внутри функции. Это открывает возможность использовать многострочный комментарий /* ... */ как строку. Вам просто нужно обрезать начало и конец строки, чтобы получить нужный результат.

Вот пример кода:

var myString = function(){/*
    Это многострочная строка,
    созданная с использованием комментария
    внутри функции, который возвращается как строка.
    Наслаждайтесь этой «халтурной» реализацией.
*/}.toString().slice(14, -3);

alert(myString);

В этом примере вы определяете функцию, внутри которой имеется многострочный комментарий. Затем, преобразуя функцию в строку с помощью .toString(), вы получаете доступ к содержимому комментария, после чего обрезаете лишние символы для получения чистой строки.

0

Я удивлён, что я не заметил этого, потому что оно работает везде, где я его тестировал, и является очень полезным для, например, шаблонов:

<script type="bogus" id="multi">
    Моя
    многострочная
    строка
</script>
<script>
    alert($('#multi').html());
</script>

Знает ли кто-нибудь о среде, где есть HTML, но это не работает?

0

Чтобы использовать <script> теги для извлечения многострочного текста, выполните следующие шаги:

  1. Добавьте блок <script>...</script> с вашим многострочным текстом в тег <head>.
  2. Получите ваш многострочный текст в неизмененном виде, учитывая, что необходимо следить за кодировкой текста (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.

0

Вам нравится такой синтаксис и использование отступов:

string = 'my long string...\n' \
         + 'continue here\n' \
         + 'and here.'

К сожалению, в Python такой способ не считается истинной мультстрокой, поскольку он использует оператор конкатенации (+). Если вы хотите использовать настоящую мультстроку, вы можете воспользоваться тройными кавычками:

string = '''my long string...
continue here
and here.'''

Но стоит заметить, что в этом случае сохраняются все символы новой строки, так что если это не подходит, то используйте первый вариант с конкатенацией.

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь