将 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
检查不是必需的;你永远不会得到null
或undefined
。以上是关于将 textareas 字符串值转换为由换行符分隔的 JavaScript 数组的主要内容,如果未能解决你的问题,请参考以下文章