将textareas字符串值转换为由新行分隔的JavaScript数组

我有一个textarea ,用户最多可以写1000个字符。 我需要获取jQuery('#textarea').val()并创建一个数组,其中每个项目都是textarea值的一行。 这意味着:

这是textarea内部的一个很好的路线。
这是另一条线。
(让我们假设这一行是空的 – 应该被忽略)。
有人在上面留下了2条以上的新线。

应该转换为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.'; 

这样就可以很容易地将它们破坏为querystring(这是提供者所需的qs格式):

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

我尝试了phpjs explode()string.split("\n")方法,但他们没有处理额外的新行(也就是换行符)。 有任何想法吗?

String.prototype.split()很甜蜜。

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

请注意,并非所有平台都支持String.prototype.split ,因此jQuery提供了$.split() 。 它只是修剪字符串末端周围的空白。

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

在这里查看: http : //jsfiddle.net/p9krF/1/

使用splitfunction:

 var arrayOfLines = $("#input").val().split("\n"); 
 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; 

试试这个

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