it-swarm.com.de

konvertieren Sie den Textareas-Zeichenfolgewert in ein durch neue Zeilen getrenntes JavaScript-Array

Ich habe eine textarea, in die der Benutzer bis zu 1000 Zeichen schreiben kann. Ich muss die jQuery('#textarea').val() erhalten und ein Array erstellen, in dem jedes Element eine Zeile des Werts von textarea ist. Das bedeutet:

Dies ist eine schöne Linie innerhalb des Textbereichs.
Dies ist eine andere Zeile.
(Nehmen wir an, diese Zeile ist leer - sollte ignoriert werden).
Jemand hat oben mehr als zwei neue Zeilen hinterlassen.

Sollte in ein JavaScript-Array umgewandelt werden:

var texts = [];
text[0] = 'This is a Nice line inside the textarea.';
text[1] = 'This is another line.';
text[2] = 'Someone left more than 2 new lines above.';

Auf diese Weise können sie leicht implodiert zum Abfragen (dies ist das vom Provider geforderte qs-Format) sein:

example.com/process.php?q=["This is a Nice line inside the textarea.","This is another line.","Someone left more than 2 new lines above."]

Ich habe beide Ansätze von phpjs explode() und string.split("\n") ausprobiert, aber sie kümmern sich nicht um die zusätzlichen neuen Zeilen (auch bekannt als Zeilenumbrüche). Irgendwelche Ideen?

24
Andres SK

String.prototype.split() ist süß.

var lines = $('#mytextarea').val().split(/\n/);
var texts = [];
for (var i=0; i < lines.length; i++) {
  // only Push this line if it contains a non whitespace character.
  if (/\S/.test(lines[i])) {
    texts.Push($.trim(lines[i]));
  }
}

Beachten Sie, dass String.prototype.split nicht auf allen Plattformen unterstützt wird. Daher bietet jQuery stattdessen $.split() an. Es schneidet einfach Leerzeichen um die Enden einer Schnur.

$.trim(" asd  \n") // "asd"

Schau es dir hier an: http://jsfiddle.net/p9krF/1/

33
Alex Wayne

Verwenden Sie die Funktion split

var arrayOfLines = $("#input").val().split("\n");
4
Abdul Munim
var split = $('#textarea').val().split('\n');
var lines = [];
for (var i = 0; i < split.length; i++)
    if (split[i]) lines.Push(split[i]);
return lines;
2
Phil Klein

Versuche dies

var lines = [];
$.each($('textarea').val().split(/\n/), function(i, line){
   if(line && line.length){
      lines.Push(line);
   }
});
1
ShankarSangoli