如何拆分换行符

我在使用 jQuery,我有一个 textarea。当我通过我的按钮提交时,我会提醒每个用换行符分隔的文本。 如何分割我的文本时,有一个换行?

  var ks = $('#keywords').val().split("\n");
(function($){
$(document).ready(function(){
$('#data').submit(function(e){
e.preventDefault();
alert(ks[0]);
$.each(ks, function(k){
alert(k);
});
});
});
})(jQuery);

例子输入:

Hello
There

我想要的结果是:

alert(Hello); and
alert(There)
315030 次浏览

尝试在提交函数中初始化 ks变量。

  (function($){
$(document).ready(function(){
$('#data').submit(function(e){
var ks = $('#keywords').val().split("\n");
e.preventDefault();
alert(ks[0]);
$.each(ks, function(k){
alert(k);
});
});
});
})(jQuery);

应该是的

yadayada.val.split(/\n/)

您传递的是一个文本字符串到 split 命令,而不是正则表达式。

  1. 在事件处理程序中移动 var ks = $('#keywords').val().split("\n");
  2. 使用 alert(ks[k])代替 alert(k)

  (function($){
$(document).ready(function(){
$('#data').submit(function(e){
e.preventDefault();
var ks = $('#keywords').val().split("\n");
alert(ks[0]);
$.each(ks, function(k){
alert(ks[k]);
});
});
});
})(jQuery);

演示

问题是在初始化 ks时,没有设置 value

当用户提交表单时,你需要 需要获取价值,所以你需要 在回调函数中初始化 ks

(function($){
$(document).ready(function(){
$('#data').submit(function(e){
//Here it will fetch the value of #keywords
var ks = $('#keywords').val().split("\n");
...
});
});
})(jQuery);

好的 javascript:

 var m = "Hello World";
var k = m.split(' ');  // I have used space, you can use any thing.
for(i=0;i<k.length;i++)
alert(k[i]);

下面是用 console.log代替 alert()的例子,它更方便:)

var parse = function(){
var str = $('textarea').val();
var results = str.split("\n");
$.each(results, function(index, element){
console.log(element);
});
};


$(function(){
$('button').on('click', parse);
});

你可以试试 给你

因为您使用的是 textarea,所以可以找到 n 或 r (或 rn)表示换行符。因此,建议如下:

$('#keywords').val().split(/\r|\n/)

档号: 检查字符串是否包含换行符

不管平台(操作系统)如何,都应该解析换行符 < strong > 这种分割对于正则表达式是通用的。您可以考虑使用以下方法:

var ks = $('#keywords').val().split(/\r?\n/);

例如。

"a\nb\r\nc\r\nlala".split(/\r?\n/) // ["a", "b", "c", "lala"]

只是

var ks = $('#keywords').val().split(/\r\n|\n|\r/);

会非常有效。

确保 \r\n位于 正则表达式字符串的前端,因为它将首先被尝试。

(function($) {
$(document).ready(function() {
$('#data').click(function(e) {
e.preventDefault();
$.each($("#keywords").val().split("\n"), function(e, element) {
alert(element);
});
});
});
})(jQuery);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>


<textarea id="keywords">Hello
World</textarea>
<input id="data" type="button" value="submit">

使用新行(无论格式如何(CRLF、 LFCR 或 LF)拆分字符串的最简单和最安全的方法是使用 删除所有回车符然后对新行字符进行拆分"text".replace(/\r/g, "").split(/\n/);

这样可以确保当您有连续的新行(例如 \r\n\r\n\n\r\n\r\n\n)时,结果始终是相同的。

在您的例子中,代码应该是这样的:

(function ($) {
$(document).ready(function () {
$('#data').submit(function (e) {
var ks = $('#keywords').val().replace(/\r/g, "").split(/\n/);
e.preventDefault();
alert(ks[0]);
$.each(ks, function (k) {
alert(k);
});
});
});
})(jQuery);

下面的一些例子说明了这种方法的重要性:

var examples = ["Foo\r\nBar", "Foo\r\n\r\nBar", "Foo\n\r\n\rBar", "Foo\nBar\nFooBar"];


examples.forEach(function(example) {
output(`Example "${example}":`);
output(`Split using "\n": "${example.split("\n")}"`);
output(`Split using /\r?\n/: "${example.split(/\r?\n/)}"`);
output(`Split using /\r\n|\n|\r/: "${example.split(/\r\n|\n|\r/)}"`);
output(`Current method: ${example.replace(/\r/g, "").split("\n")}`);
output("________");
});


function output(txt) {
console.log(txt.replace(/\n/g, "\\n").replace(/\r/g, "\\r"));
}

不需要传递任何正则表达式,这样就可以了。

 (function($) {
$(document).ready(function() {
$('#data').click(function(e) {
e.preventDefault();
$.each($("#keywords").val().split("\n"), function(e, element) {
alert(element);
});
});
});
})(jQuery);

在反应本机,我已经完成了分裂的新行字符通过双回斜杠,第一个是作为一个转义字符:

data = str.split("\\n");