[jquery] 자바 스크립트 줄 바꿈 분할 방법

jquery를 사용하고 있으며 텍스트 영역이 있습니다. 버튼으로 제출할 때 줄 바꿈으로 구분 된 각 텍스트를 경고합니다. 줄 바꿈이있을 때 텍스트를 분할하는 방법은 무엇입니까?

  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)



답변

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);


답변

플랫폼 (운영 체제)에 관계없이 줄 바꿈을 구문 분석해야합니다.
이 분할은 정규식에서 보편적입니다. 이것을 사용하는 것을 고려할 수 있습니다 :

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

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


답변

그것은해야한다

yadayada.val.split(/\n/)

정규식이 아닌 분할 명령에 리터럴 문자열을 전달합니다.


답변

을 사용하고 있으므로 textarea줄 바꿈에 대해 \ n 또는 \ r (또는 \ r \ n)을 찾을 수 있습니다. 따라서 다음이 제안됩니다.

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

ref : 문자열에 줄 바꿈이 있는지 확인


답변

다만

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

완벽하게 작동합니다.

RegExp 문자열 \r\n의 맨 앞에 있어야 합니다. 먼저 시도됩니다.


답변

간단하고 안전한 방법은 형식에 관계없이 (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"));
}


답변

  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);

데모