2016-08-19 3 views
-2

Ich habe folgenden Code snipplet:ersetzt neue Linie mit Raum in variable Javascript vor Funktion

<script> 
    var textstring = 
    'Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. 
Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.'; 

function insertNewLines(textstr, nos) { 

var resulttext = ''; 
textstr = textstr.replace("\n", "<br />"); 
while (textstr.length > 0) { 

resulttext += textstr.substring(0, nos) + '<br/>'; 
textstr = textstr.substring(nos); 

} 

Der Text in Textstring sind 2 Reihen d.h. ein \ \ r n trennt die erste von der zweiten Reihe. Wenn ich die Funktion anrufe, gibt es mir einen Fehler, noch bevor ich das Ersatzteil erhalte. (Debugger sagt, dass der Block wegen des Zeilenumbruchs nicht korrekt geschlossen wurde)

Gibt es einen Weg, wie ich das umgehen kann? Ich muss nur den Zeilenumbruch loswerden oder besser noch behalten, aber das Skript korrekt laufen lassen.

Vielen Dank für Ihre Hilfe.

TheVagabond

+2

Ihnen fehlt eine schließende Klammer für die Funktion nach der while-Schleife ('}'). – nils

+2

Und literale Zeilenumbrüche in ''' oder '" 'zitierten Strings sind in JavaScript nicht gültig, es sei denn, sie werden mit einem Backslash entfernt. (Sie sind in den Vorlageliteralen von ES2015 gültig.) –

Antwort

2

Es gibt zwei grundlegende Syntaxfehler in diesem Code:

  1. Sie können nicht eine neue Zeile in einem Stringliteral haben, wenn Sie es mit einem Backslash. (Sie können in einem ES2015-Vorlagenliteral, aber nicht in einem Zeichenfolgenliteral.) Wenn Sie dies tun, ist die neue Zeile nicht in der Zeichenfolge enthalten. Verwenden Sie stattdessen \r\n.

  2. Sie verpassen die Schließung } auf die Funktion

von Abgesehen davon, obwohl es für die Schleife nicht erforderlich ist; JavaScript ist replace kann einen regulären Ausdruck mit der g Flagge (für "global") akzeptieren, so:

var textstring = 
 
    'Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa.\r\nCum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.'; 
 

 
function insertNewLines(textstr, nos) { 
 
    return textstr.replace(/\r\n/g, "<br />"); 
 
} 
 

 
console.log(insertNewLines(textstring));

ich die wörtliche Newline mit einem \r\n ersetzt habe, und ersetzt dann die Schleife mit der Einzelruf an replace.

+0

Danke für Ihre Antwort. Funktioniert! – Thevagabond

-1

Erste deifine dein Stachel lilke dies,

var textstring ='Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa.\ 
Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.'; 

Und eine Klammer auf Ihre Funktion hinzufügen, sollte es funktionieren.

function insertNewLines(textstr, nos) { 

var resulttext = ''; 
textstr = textstr.replace("\n", "<br />"); 
while (textstr.length > 0) { 

resulttext += textstr.substring(0, nos) + '<br/>'; 
textstr = textstr.substring(nos); 

} 
} 
+0

Nein, weil es keine Zeilenumbrüche mehr gibt Zeichenfolge.Die maskierte neue Zeile ist nicht in der Zeichenfolge enthalten. –

-1

Neue Zeilen in der JavaScript-Zeichenfolge sollten mit einem Backslash (\) maskiert werden.

Ihre Variable textstring muss ebenfalls wie folgt aktualisiert werden.

+0

Nein, weil in der Zeichenfolge keine Zeilenumbrüche mehr vorhanden sind. Die maskierte neue Zeile ist nicht in der Zeichenfolge enthalten. –

-1

Sie müssen die literale Zeichenfolge mit einem umgekehrten Schrägstrich auch entkommen, es gab keine schließende Klammer. Unter dem Code ist ein Backslash enthalten und das Skript funktioniert. Allerdings ist die Ausgabe, was Sie wollten, nicht überprüft.

var textstring = 
'Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa.\ 
Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.'; 

insertNewLines(textstring,2); 
function insertNewLines(textstr, nos) { 

var resulttext = ''; 
textstr = textstr.replace("\n", "<br />"); 
while (textstr.length > 0) { 

resulttext += textstr.substring(0, nos) + '<br/>'; 
textstr = textstr.substring(nos); 

} 
}