Odpowiedzi:
W twoim przykładzie możesz podzielić sznurek na dwie części:
alert ( "Please Select file"
+ " to delete");
Lub, gdy jest to ciąg znaków, tak jak w twoim przypadku, możesz użyć ukośnika odwrotnego, jak sugerował @Gumbo:
alert ( "Please Select file\
to delete");
Zauważ, że to podejście z odwrotnym ukośnikiem niekoniecznie jest preferowane i być może nie jest powszechnie obsługiwane (miałem problem ze znalezieniem twardych danych na ten temat). Nie ma go w specyfikacji ECMA 5.1 .
Podczas pracy z innym kodem (nie w cudzysłowach) podziały wierszy są ignorowane i całkowicie dopuszczalne. Na przykład:
if(SuperLongConditionWhyIsThisSoLong
&& SuperLongConditionOnAnotherLine
&& SuperLongConditionOnThirdLineSheesh)
{
// launch_missiles();
}
Umieść odwrotny ukośnik na końcu linii:
alert("Please Select file\
to delete");
Edytuj Muszę zauważyć, że nie jest to część ciągów ECMAScript, ponieważ znaki kończące linie w ogóle są niedozwolone:
Znak „ LineTerminator ” nie może występować w literale ciągu, nawet jeśli poprzedzony jest odwrotnym ukośnikiem
\
. Prawidłowym sposobem spowodowania, aby znak końca linii był częścią wartości ciągu literału ciągu, jest użycie sekwencji zmiany znaczenia, takiej jak\n
lub\u000A
.
Zatem użycie konkatenacji łańcuchów jest lepszym wyborem.
Aktualizacja 2015-01-05 Literały łańcuchowe w ECMAScript5 pozwalają na wspomnianą składnię:
Znak końca linii nie może występować w literale ciągu, chyba że jako część LineContinuation w celu utworzenia pustej sekwencji znaków. Prawidłowym sposobem spowodowania, aby znak końca linii był częścią wartości ciągu literału ciągu, jest użycie sekwencji zmiany znaczenia, takiej jak
\n
lub\u000A
.
\n
lub \u000A
. ”
\r\n
zamiast \n
?
ECMAScript 6 wprowadza ciągi szablonów :
Ciągi szablonów są literałami ciągów, umożliwiającymi osadzanie wyrażeń. Możesz używać z nimi ciągów wieloliniowych i funkcji interpolacji ciągów.
Na przykład,
alert(`Please Select file
to delete`);
zaalarmuje
Please Select file
to delete
`
klucz. Ponieważ jest to modyfikator, nie jest zapisywany bezpośrednio. Prawdopodobnie dlatego pomyślałeś, że powinieneś nacisnąć go dwa razy, ale to zapisze dwa z nich. Naciśnij spację, aby napisać tylko jeden.
Podziel sznurek na dwie części
alert ("Please select file " +
"to delete");
Ciekawe do odnotowania. Wypróbowany:
alert("Some \
string \
wrapped \
across \
mutliples lines.")
I to zadziałało. Jednak przypadkowo! Po ostatnim odwrotnym ukośniku pojawił się znak spacji (wszystkie pozostałe odwrotne ukośniki znajdowały się na końcu linii). A to spowodowało błąd w javascript! Usunięcie tego miejsca naprawiło błąd.
To jest w ADT na Androida za pomocą Cordova.
Some\n<4 spaces>string\n<4 spaces>wrapped\n<4 spaces>across\n<4 spaces>multiple lines.
Możesz po prostu użyć
1: alert("Please select file" +
2: " to delete");
To powinno działać
Możesz podzielić długą ciąg znaków na logiczne fragmenty i przypisać je do tablicy. Następnie wykonaj a join
z pustym ciągiem jako separatorem.
var stringArray = [
'1. This is first part....',
'2. This is second part.....',
'3. Finishing here.'
];
var bigLongString = stringArray.join('');
console.log(bigLongString);
Dane wyjściowe będą:
- To jest pierwsza część .... 2. To druga część ..... 3. Kończę tutaj.
W ten sposób osiągnięto niewielką wydajność, ale zyskujesz na czytelności kodu i łatwości konserwacji.
Dobrym rozwiązaniem dla użytkowników VSCode , jeśli problem powoduje podział łańcucha na wiele linii (stanąłem przed tym, gdy musiałem przetestować długi token JWT i jakoś użycie literałów szablonów nie załatwiło sprawy).
Wypróbowałem kilka powyższych sugestii, ale otrzymałem NIELEGALNE ostrzeżenie o znaku w inspektorze kodu Chrome. Poniższe działało dla mnie (tylko przetestowane w Chrome!)
alert('stuff on line 1\\nstuff on line 2);
wychodzi jak ...
stuff on line 1
stuff on line 2
UWAGA podwójny ukośnik !! ... wydaje się to ważne!
Nie ma potrzeby ręcznego łamania kodu. Po prostu dodaj \ n tam, gdzie chcesz się zepsuć.
alert ("Please Select file \n to delete");
To pokaże ostrzeżenie jak
Please select file
to delete.