Javascript如何拆分换行符

okn*_*rap 80 javascript jquery

我使用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);
Run Code Online (Sandbox Code Playgroud)

示例输入:

Hello
There
Run Code Online (Sandbox Code Playgroud)

我想要的结果是:

alert(Hello); and
alert(There)
Run Code Online (Sandbox Code Playgroud)

Joh*_*ock 76

尝试初始化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);
Run Code Online (Sandbox Code Playgroud)

  • alert(k)仅警告序列号,而不警告值。您应该提醒(ks [k]) (2认同)
  • @hblackorby你的评论虽然相关,但在某种程度上是一个静音点,因为OP的主要问题是他的变量"ks"的范围和初始化 (2认同)

Adi*_*rya 46

您应该解析换行符而不管平台(操作系统) 这种具有正则表达式的拆分是通用的,您可以考虑使用它.

var ks = $('#keywords').val().split(/\r?\n/);
Run Code Online (Sandbox Code Playgroud)

例如

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


Mar*_*c B 45

它应该是

yadayada.val.split(/\n/)
Run Code Online (Sandbox Code Playgroud)

你将文字字符串传递给split命令,而不是正则表达式.

  • 是的,但有效的区别是什么?不要""\n"`和`/ \n /`匹配相同的东西? (23认同)
  • "\n"和/ \n /两者的工作方式大致相同,但根据您要分割的来源,val.split(/ [\ r \n] + /)之类的东西可能会更好.如果你的源有"\ r \n"换行符,那么拆分"\n"会在末尾留下"\ r",这会导致问题. (20认同)
  • 所以呢?拆分"\n"有什么问题? (6认同)
  • ``\n"`和`/ \n /`是JS中两个完全不同的东西.````= string,`/`=正则表达式. (3认同)

Rap*_*tor 28

由于您正在使用textarea,您可能会找到\n或\ r \n(或\ r \n)用于换行符.因此,建议如下:

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

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

  • 或者更具体地说,`/\r?\n /`...我认为使用`|`(或)将交错CRLF行结尾的空结果. (28认同)

nic*_*oum 10

无论格式如何(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);
Run Code Online (Sandbox Code Playgroud)

以下是一些显示此方法重要性的示例:

(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);
Run Code Online (Sandbox Code Playgroud)


Jac*_*ing 6

只是

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

将完美地工作。

确保\r\n将其放在RegExp字符串的开头,因为将首先尝试使用它。