Как разбить строку на более чем одну строку кода в JavaScript?
Есть ли в JavaScript символ, разбивающий строку кода, чтобы он читался как непрерывный, несмотря на то, что он находится на новой строке?
Что-то вроде....
1. оповещение ( "Пожалуйста, выберите файл 2. \ удалить ");
8 ответов
В вашем примере вы можете разбить строку на две части:
alert ( "Please Select file"
+ " to delete");
Или, когда это строка, как в вашем случае, вы можете использовать обратную косую черту, как предложил @Gumbo:
alert ( "Please Select file\
to delete");
Обратите внимание, что такой подход с обратной косой чертой не обязательно предпочтителен и, возможно, не поддерживается повсеместно (у меня были проблемы с поиском точных данных по этому вопросу). Этого нет в спецификации ECMA 5.1.
При работе с другим кодом (не в кавычках) разрывы строк игнорируются и совершенно приемлемы. Например:
if(SuperLongConditionWhyIsThisSoLong
&& SuperLongConditionOnAnotherLine
&& SuperLongConditionOnThirdLineSheesh)
{
// launch_missiles();
}
Поставьте обратную косую черту в конце строки:
alert("Please Select file\
to delete");
Изменить Я должен отметить, что это не является частью строк ECMAScript, так как символы конца строки не допускаются вообще:
Символ LineTerminator не может появляться в строковом литерале, даже если ему предшествует обратная косая черта
\
, Правильный способ заставить символ конца строки быть частью строкового значения строкового литерала - это использовать escape-последовательность, такую как\n
или же\u000A
,
Поэтому лучше использовать конкатенацию строк.
Обновление 2015-01-05 Строковые литералы в ECMAScript5 допускают указанный синтаксис:
Символ конца строки не может появляться в строковом литерале, кроме как как часть LineContinuation для создания пустой последовательности символов. Правильный способ заставить символ конца строки быть частью значения String строкового литерала - использовать escape-последовательность, такую как
\n
или же\u000A
,
ECMAScript 6 представляет строки шаблона:
Шаблонные строки являются строковыми литералами, допускающими встроенные выражения. Вы можете использовать многострочные строки и функции интерполяции строк.
Например,
alert(`Please Select file
to delete`);
предупредит
Please Select file
to delete
Разбейте нить на две части
alert ("Please select file " +
"to delete");
Интересно отметить. Пытался:
alert("Some \
string \
wrapped \
across \
mutliples lines.")
И это сработало. Однако, случайно, после финального обратного слэша был пробел (все остальные обратные слэши были в конце строки). И это вызвало ошибку в JavaScript! Удаление этого пробела исправило ошибку.
Это в ADT для Android с использованием Cordova.
Вы можете просто использовать
1: alert("Please select file" +
2: " to delete");
Это должно работать
Вы можете разбить длинную строковую константу на логические порции и назначить их в массив. Тогда сделай join
с пустой строкой в качестве разделителя.
var stringArray = [
'1. This is first part....',
'2. This is second part.....',
'3. Finishing here.'
];
var bigLongString = stringArray.join('');
console.log(bigLongString);
Выход будет:
- Это первая часть....2. Это вторая часть.....3. Заканчиваю здесь.
Таким образом, наблюдается незначительное снижение производительности, но вы получаете улучшенную читаемость и удобство обслуживания.
Оператор обратной косой черты ненадежен. Попробуйте вставить эту функцию в консоль браузера:
function printString (){
const s = "someLongLineOfText\
ThatShouldNotBeBroken";
console.log(s);
}
а затем запустите его. Из-за обычного (и правильного) отступа внутри функции будут включены два дополнительных пробела, что приведет к
someLongLineOfText ThatShouldNotBeBroken
.
В этом случае даже обратные кавычки не помогут. Всегда используйте оператор конкатенации "+", чтобы избежать проблем такого типа.
Хорошее решение для пользователей VSCode, если строка, разбивающаяся на несколько строк, вызывает проблему (я столкнулся с этим, когда мне нужно было протестировать длинный токен JWT, и каким-то образом использование шаблонных литералов не помогло.)
Я попробовал несколько из вышеперечисленных предложений, но получил предупреждение ILLEGAL символа в Инспекторе кода Chrome. Следующее сработало для меня (хотя проверено только в Chrome!)
alert('stuff on line 1\\nstuff on line 2);
выходит как...
stuff on line 1
stuff on line 2
ЗАМЕТЬТЕ двойную обратную косую черту!!... это кажется важным!
Нет необходимости какого-либо ручного взлома кода. Просто добавьте \n, где вы хотите сломать.
alert ("Please Select file \n to delete");
Это покажет предупреждение как
Please select file
to delete.