Как разбить строку на более чем одну строку кода в JavaScript? - PullRequest
179 голосов
/ 03 февраля 2009

Есть ли в JavaScript символ, разбивающий строку кода, чтобы он читался как непрерывный, несмотря на то, что он находится на новой строке?

Что-то вроде ....

1. alert ( "Please Select file   
2. \ to delete" );

Ответы [ 9 ]

246 голосов
/ 03 февраля 2009

В вашем примере вы можете разбить строку на две части:

alert ( "Please Select file"
 + " to delete");

Или, когда это строка, как в вашем случае, вы можете использовать обратную косую черту , как подсказывает @Gumbo:

alert ( "Please Select file\
 to delete");

Обратите внимание, что этот метод обратной косой черты не обязательно предпочтителен и, возможно, не поддерживается повсеместно (у меня возникли проблемы с поиском точных данных по этому вопросу) Это не в спецификации ECMA 5.1 .

При работе с другим кодом (не в кавычках) разрывы строк игнорируются и совершенно приемлемы. Например:

if(SuperLongConditionWhyIsThisSoLong
  && SuperLongConditionOnAnotherLine
  && SuperLongConditionOnThirdLineSheesh)
{
    // launch_missiles();
}
41 голосов
/ 03 февраля 2009

Поставьте обратную косую черту в конце строки:

alert("Please Select file\
 to delete");

Редактировать Я должен отметить, что это не часть строк ECMAScript как символы окончания строки вообще не разрешены:

Символ ' LineTerminator ' не может появляться в строковом литерале, даже если ему предшествует обратный слеш \. Правильный способ заставить символ конца строки быть частью строкового литерала - использовать escape-последовательность, такую ​​как \n или \u000A.

Так что лучше использовать конкатенацию строк.


Обновление 2015-01-05 Строковые литералы в ECMAScript5 допускают указанный синтаксис:

Символ конца строки не может появляться в строковом литерале, кроме как как часть LineContinuation для создания пустой последовательности символов. Правильный способ заставить символ конца строки быть частью значения String строкового литерала - использовать escape-последовательность, такую ​​как \n или \u000A.

27 голосов
/ 28 июня 2015

ECMAScript 6 представляет строки шаблона :

Шаблонные строки - это строковые литералы, допускающие встроенные выражения. Вы можете использовать многострочные строки и функции интерполяции строк с их.

Например,

alert(`Please Select file   
to delete`);

предупредит

Please Select file   
to delete
6 голосов
/ 03 февраля 2009

Разбейте нить на две части

alert ("Please select file " +
       "to delete");
4 голосов
/ 17 марта 2013

Интересно отметить. Пробовал:

alert("Some \
    string \
    wrapped \
    across \
    mutliples lines.")

И это сработало. Однако в случае аварии !, после финального обратного слэша был пробел (все остальные обратные слэши были в конце строки) И это вызвало ошибку в JavaScript! Удаление этого пробела исправило ошибку.

Это в ADT для Android с использованием Cordova.

1 голос
/ 03 февраля 2009

Вы можете просто использовать

1:  alert("Please select file" +
2:        " to delete");

Это должно работать

0 голосов
/ 02 мая 2019

Вы можете разбить длинную строковую константу на логические порции и назначить их в массив. Затем выполните join с пустой строкой в ​​качестве разделителя.

var stringArray = [
  '1. This is first part....',
  '2. This is second part.....',
  '3. Finishing here.'
];

var bigLongString = stringArray.join('');
console.log(bigLongString);

Вывод будет:

  1. Это первая часть .... 2. Это вторая часть ..... 3. Заканчиваю здесь.

В этом случае наблюдается незначительное снижение производительности, но вы получаете улучшенную читаемость и удобство обслуживания.

0 голосов
/ 31 июля 2013

Я попробовал несколько из вышеперечисленных предложений, но получил предупреждение НЕЗАКОННОГО символа в Инспекторе кода Chrome Следующее сработало для меня (хотя проверено только в Chrome!)

alert('stuff on line 1\\nstuff on line 2);

выходит как ...

stuff on line 1
stuff on line 2

ВНИМАНИЕ двойная обратная косая черта !! ... это важно!

0 голосов
/ 04 июля 2012

Нет необходимости ручного взлома кода. Просто добавьте \ n туда, где хотите разбить.

alert ("Please Select file \n to delete");

Это покажет предупреждение как

Please select file 
to delete.
...