Javascript如何拆分换行符

时间:2011-11-14 17:40:43

标签: 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);

示例输入:

Hello
There

我想要的结果是:

alert(Hello); and
alert(There)

13 个答案:

答案 0 :(得分:64)

尝试初始化提交功能中的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);

答案 1 :(得分:38)

应该是

yadayada.val.split(/\n/)

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

答案 2 :(得分:28)

由于您使用的是textarea,因此您可以找到换行符的\ n或\ r \ n(或\ r \ n \ n)。因此,建议如下:

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

参考:check whether string contains a line break

答案 3 :(得分:25)

无论平台(操作系统),您都应该解析换行符 这种具有正则表达式的分割是通用的,您可以考虑使用它。

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

E.g。

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

答案 4 :(得分:6)

只需

2*sizeof(int)

将完美运作。

请确保var ks = $('#keywords').val().split(/\r\n|\n|\r/);位于 RegExp 字符串的前面,因为它将首先尝试。

答案 5 :(得分:3)

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

  3.   (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);
    

    Demo

答案 6 :(得分:1)

最简单,最安全的使用换行符来分割字符串的方法,而不考虑格式(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"));
}

答案 7 :(得分:0)

问题是,当您初始化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);

答案 8 :(得分:0)

Good'ol 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]);  

答案 9 :(得分:0)

以下是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);
});

您可以尝试here

答案 10 :(得分:0)

您不需要在那里传递任何正则表达式。这很好。.

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

答案 11 :(得分:0)

在 React Native 中,我通过双反斜杠完成了换行符的拆分,第一个是作为转义符:

3

答案 12 :(得分:-1)

(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">