Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

convert textareas string value to JavaScript array separated by new lines

I have a textarea where the user can write up to 1000 characters. I need to get the jQuery('#textarea').val() and create an array where each item is a line of the textarea's value. That means:

This is a nice line inside the textarea.
This is another line.
(let's asume this line is empty - it should be ignored).
Someone left more than 2 new lines above.

Should be converted to a JavaScript array:

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

That way they can be easily imploded for to querystring (this is the qs format required by the provider):

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

I tried both the phpjs explode() and string.split("\n") approaches but they doesn't take care of the extra new lines (aka line breakes). Any ideas?

like image 592
Andres SK Avatar asked Dec 12 '11 18:12

Andres SK


4 Answers

String.prototype.split() is sweet.

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

Note that String.prototype.split is not supported on all platforms, so jQuery provides $.split() instead. It simply trims whitespace around the ends of a string.

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

Check it out here: http://jsfiddle.net/p9krF/1/

like image 145
Alex Wayne Avatar answered Nov 18 '22 12:11

Alex Wayne


Use split function:

var arrayOfLines = $("#input").val().split("\n");
like image 25
Abdul Munim Avatar answered Nov 18 '22 11:11

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;
like image 3
Phil Klein Avatar answered Nov 18 '22 12:11

Phil Klein


Try this

var lines = [];
$.each($('textarea').val().split(/\n/), function(i, line){
   if(line && line.length){
      lines.push(line);
   }
});
like image 1
ShankarSangoli Avatar answered Nov 18 '22 12:11

ShankarSangoli