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

时间:2011-12-12 18:29:25

标签: javascript jquery arrays string newline

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

这样他们就可以轻松地imploded来查询字符串(这是提供者所需的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")两种方法,但它们没有处理额外的新行(也就是换行符)。有什么想法吗?

4 个答案:

答案 0 :(得分:33)

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/

答案 1 :(得分:5)

使用split功能:

var arrayOfLines = $("#input").val().split("\n");

答案 2 :(得分:3)

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;

答案 3 :(得分:1)

试试这个

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