জাভাস্ক্রিপ্ট কীভাবে নতুন লাইনে বিভক্ত হয়


111

আমি 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)

উত্তর:


95

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

4
সতর্কতা (কে) কেবল সিকোয়েন্স নম্বরটি সতর্ক করে, মানটি করে না। আপনার সতর্কতা অবলম্বন করা উচিত (কেএস [কে])
এইচ ব্ল্যাকর্বি

4
@hblackorby আপনার মন্তব্যটি প্রাসঙ্গিক হলেও এটি কিছুটা নিঃশব্দ বিষয় কারণ এখানে ওপির প্রাথমিক সমস্যাটি ছিল তার পরিবর্তনশীল "কেএস" এর সুযোগ এবং সূচনা
জন হার্টসক

106

প্ল্যাটফর্ম (অপারেশন সিস্টেম) নির্বিশেষে আপনার নতুন লাইনগুলি পার্স করা উচিত নিয়মিত প্রকাশের সাথে এই বিভাজনটি সর্বজনীন। আপনি এটি ব্যবহার বিবেচনা করতে পারেন:

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

যেমন

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

51

এটা করা উচিত

yadayada.val.split(/\n/)

আপনি একটি আক্ষরিক স্ট্রিংয়ে বিভক্ত কমান্ডে যাচ্ছেন, কোনও রেজেক্স নয়।


4
"\n"এবং /\n/জেএস এ দুটি সম্পূর্ণ আলাদা জিনিস। "= স্ট্রিং, /= রেজেক্স।
মার্ক বি বি

25
হ্যাঁ, তবে কার্যকর পার্থক্য কী? "\n"এবং /\n/একই জিনিস মেলে না ?
স্কট স্টাফোর্ড

22
"\ N" এবং / \ n / উভয়ই একই বিষয়ে কাজ করবে তবে আপনি যে উত্সটি বিভক্ত করছেন তার উপর নির্ভর করে ভাল.স্প্লিট (/ [\ r \ n] + /) এর মতো আরও কিছু ভাল হতে পারে। যদি আপনার উত্সটিতে "\ r \ n" লাইন-ব্রেক রয়েছে তবে "\ n" এ বিভাজনটি শেষে "\ r" ছেড়ে দেয় যা সমস্যার কারণ হতে পারে।
xtempore

31

যেহেতু আপনি ব্যবহার করছেন textarea, আপনি লাইন বিরতির জন্য \ n বা \ r (বা \ r \ n) পেতে পারেন। সুতরাং, নিম্নলিখিত পরামর্শ দেওয়া হয়:

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

রেফ: স্ট্রিংয়ে একটি লাইন ব্রেক রয়েছে কিনা তা পরীক্ষা করুন


29
বা, আরও সুনির্দিষ্টভাবে /\r?\n/... ... আমার মনে হয় |(বা) ব্যবহার করা সিআরএলএফ লাইন শেষের জন্য ফাঁকা ফলাফল ফাঁকা করবে।
ধূলো

আপনি আধুনিক ওয়েবে কোথাও সিআর-কেবল ( \r) লাইন বিরতি দেখতে পাচ্ছেন না । প্রায় 20 বছর আগে প্রাচীন ম্যাক ওএস সংস্করণগুলিতে তারা সর্বজনীনভাবে ব্যবহৃত সর্বশেষ স্থানটি ছিল ।
ইলমারি করোনেন

8

ঠিক

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

পুরোপুরি কাজ করবে।

নিশ্চিত \r\nহয়ে নিন যে RegExp স্ট্রিংয়ের শীর্ষে স্থাপন করা হয়েছে , কারণ এটি প্রথমে চেষ্টা করা হবে।


gRegex শেষে প্রয়োজন নেই
Yetti99

4

বিন্যাস (সিআরএলএফ, এলএফসিআর বা এলএফ) নির্বিশেষে নতুন রেখাগুলি ব্যবহার করে স্ট্রিংকে বিভক্ত করার সহজ ও নিরাপদতম উপায় হ'ল সমস্ত ক্যারেজ রিটার্ন অক্ষর মুছে ফেলা এবং তারপরে নতুন লাইন বর্ণগুলিতে বিভক্ত হওয়া"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"));
}


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

ডেমো


1

গুড'ল জাভাস্ক্রিপ্ট:

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

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

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

আপনি এটি এখানে চেষ্টা করতে পারেন


0

আপনার সেখানে কোনও নিয়মিত অভিব্যক্তি পাস করার দরকার নেই। এটি ঠিক কাজ করে ..

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

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


4
এই পদ্ধতির বিদ্যমান উত্তরগুলি দিয়ে ভালভাবে কভার করা হয়েছে
কাইলমিট

@ কাইলমিট হ্যাঁ, আমি এই উত্তরগুলি দিয়ে যাচ্ছি, জাভাস্ক্রিপ্টের প্রাথমিক ধারণার কারণে সর্বাধিক সম্ভাব্য উত্তরগুলি একইরকম, তবে আমি এই উত্তরটি পোস্ট করার কারণে কোডের লাইনটির সাথে ফোকাস বা উদ্বেগ
নিয়েছি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.