web-dev-qa-db-fra.com

convertit la valeur de la chaîne textareas en un tableau JavaScript séparé par de nouvelles lignes

J'ai une textarea où l'utilisateur peut écrire jusqu'à 1000 caractères. Je dois obtenir le jQuery('#textarea').val() et créer un tableau où chaque élément est une ligne de la valeur de textarea. Cela signifie:

Ceci est une belle ligne à l'intérieur de la textarea.
Ceci est une autre ligne.
(supposons que cette ligne soit vide - elle devrait être ignorée).
Quelqu'un a laissé plus de 2 nouvelles lignes ci-dessus.

Devrait être converti en un tableau JavaScript:

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.';

De cette façon, ils peuvent être facilement implodés pour les chaînes de requête (c'est le format qs requis par le fournisseur):

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."]

J'ai essayé les approches phpjs explode() et string.split("\n") mais elles ne prennent pas en charge les nouvelles lignes supplémentaires (autrement dit, les sauts de ligne). Des idées?

24
Andres SK

String.prototype.split() est doux.

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]));
  }
}

Notez que String.prototype.split n'est pas pris en charge sur toutes les plateformes. Par conséquent, jQuery fournit plutôt $.split(). Il supprime simplement les espaces autour des extrémités d'une chaîne.

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

Découvrez-le ici: http://jsfiddle.net/p9krF/1/

33
Alex Wayne

Utilisez la fonction 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

Essaye ça

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