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

Posted

技术标签:

【中文标题】将 textareas 字符串值转换为由换行符分隔的 JavaScript 数组【英文标题】:convert textareas string value to JavaScript array separated by new lines 【发布时间】: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() 试过了,但它没有处理额外的行(如果有的话)问题。 【参考方案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

以上是关于将 textareas 字符串值转换为由换行符分隔的 JavaScript 数组的主要内容,如果未能解决你的问题,请参考以下文章

将字符串转换为由点分隔的数字,其中 a=1 和 z=26

Bash将多行字符串转换为单个换行符分隔的字符串[重复]

将制表符和换行符分隔的字符串转换为 pandas 数据框

如何将空格和换行符从 TEXTAREA 转换为 html

不要在angularjs的textarea中输入超过20个逗号分隔或换行符分隔的序列号和字母数字

ruby Amazon ASIN正则表达式和Ruby用于从逗号分隔或换行符分隔的textarea中提取asins