Многострочная строка JavaScript

Вопрос в том:

Каков метод JavaScript для сохранения многострочной строки в переменной, как в PHP?


person luca    schedule 22.03.2011    source источник
comment
Что вы имеете в виду под словом «захватить»? Откуда?   -  person Unicron    schedule 22.03.2011
comment
проверьте мой ответ на stackoverflow.com/a/19970452/209797   -  person AgelessEssence    schedule 14.11.2013


Ответы (5)


Если под «многострочной строкой» вы подразумеваете строку, содержащую разрывы строк, их можно записать, экранировав их с помощью \n (для новой строки):

var multilineString = 'Line 1\nLine 2';
alert(multilineString);
// Line 1
// Line 2

Если вы имеете в виду, как можно записать строку в несколько строк кода, тогда вы можете продолжить строку, поставив \ обратную косую черту в конце строки:

var multilineString = 'Line \
1\nLine 2';
alert(multilineString);
// Line 1
// Line 2
person Martijn    schedule 22.03.2011

Основываясь на предыдущих ответах и ​​различных вариантах использования, вот небольшой пример:

https://gist.github.com/lavoiesl/5880516 Не забудьте использовать / *! чтобы избежать удаления комментария при минификации

function extractFuncCommentString(func) {
  var matches = func.toString().match(/function\s*\(\)\s*\{\s*\/\*\!?\s*([\s\S]+?)\s*\*\/\s*\}/);
  if (!matches) return false;

  return matches[1];
}

var myString = extractFuncCommentString(function(){/*!
  <p>
    foo bar
  </p>
*/});
person sebastien    schedule 27.06.2013
comment
Я никогда раньше такого не видел и не знаю, насколько это практично, но это чертовски творческий способ работы с многострочными строками! +1 - person Oleg; 13.09.2013

Единственный (?) Способ иметь многострочные строки в Javascript:

var multiline_string = 'line 1\
line 2\
line 3';
person Björn    schedule 22.03.2011

Это работает:

var htmlString = "<div>This is a string.</div>";

Это не удается:

var htmlSTring = "<div>
  This is a string.
</div>";

Иногда это желательно для удобства чтения.

Добавьте обратную косую черту, чтобы заставить его работать:

var htmlSTring = "<div>\
  This is a string.\
</div>";

или так

var htmlSTring  = 'This is\n' +
'a multiline\n' + 
'string';
person Muhammad Tahir    schedule 20.08.2015

person    schedule
comment
Примечание. Это работает только с ES6 и на момент написания этой статьи плохо поддерживается в IE11 или Safari. - person Mike Cluck; 18.09.2015
comment
Это становится правильным ответом. - person John; 20.08.2017
comment
Ух, зачем JS изобретать велосипед? Это должен быть подпроцесс. - person Joshua Cook; 26.01.2019