【问题标题】:convert textareas string value to JavaScript array separated by new lines将 textareas 字符串值转换为由换行符分隔的 JavaScript 数组
【发布时间】:2012-01-18 17:26:18
【问题描述】:

我有一个textarea,用户可以在其中写入最多 1000 个字符。我需要获取jQuery('#textarea').val() 并创建一个数组,其中每个项目都是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") 两种方法,但它们没有处理额外的新行(也就是换行符)。有什么想法吗?

【问题讨论】:

  • 就在我的脑海中,也许尝试拆分它,然后将拆分的位输入一个数组?
  • @AndrewPeacock 我刚刚用一些信息更新了帖子。我用 phpjs explode() 试过了,但它没有处理额外的行(如果有的话)问题。

标签: javascript jquery arrays string newline


【解决方案1】:

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/

【讨论】:

  • 只有一件事...允许额外输入一个,两个不允许(2 个或更多应转换为一个)。有什么想法吗?
  • 这不是sn-p吗?如果一行只包含空格,则会被忽略。
  • 是的,但您最多可以拥有其中的 1 个。这对于段落分隔很方便。
【解决方案2】:

使用split函数:

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

【讨论】:

  • 应该是.split(/\n/)
【解决方案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;

【讨论】:

  • 工作并处理了额外的空间,谢谢!只有一件事,应该删除“int”;)
【解决方案4】:

试试这个

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

【讨论】:

  • .each 应该添加什么?我的意思是,您正在迭代一个数组,将每个元素推送到一个新数组,而不是使用原始数组。它看起来不是很有用。
  • 我觉得现在说得通了,不是吗?
  • 确实如此 :) 虽然line 检查不是必需的;你永远不会得到nullundefined
猜你喜欢
  • 2019-08-23
  • 1970-01-01
  • 2010-10-19
  • 2012-11-08
  • 2018-02-16
  • 1970-01-01
  • 1970-01-01
  • 2013-05-06
  • 1970-01-01
相关资源
最近更新 更多