programing

새 줄을 분할하는 방법

css3 2023. 8. 13. 09:52

새 줄을 분할하는 방법

저는 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)

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

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

예.

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

초기화 시도: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/)

정규식이 아니라 분할 명령에 리터럴 문자열을 전달하는 것입니다.

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

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

ref: 문자열에 줄 바꿈이 포함되어 있는지 확인합니다.

그저.

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

완벽하게 작동할 것입니다.

명심하라.\r\nRegExp 문자열의 맨 앞에 위치합니다. 먼저 시도되기 때문입니다.

형식(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);

데모

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

문제는 초기화할 때ks,그value설정되지 않았습니다.

사용자가 양식을 제출할 때 값을 가져와야 합니다.그래서 당신은 내부 콜백 기능을 초기화해야 합니다.

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

다음은 의 예입니다.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);
});

여기서 사용해 보세요.

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

당신은 거기에 정규 표현을 전달할 필요가 없습니다.이것은 잘 작동합니다.

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

언급URL : https://stackoverflow.com/questions/8125709/how-to-split-newline