আমি কীভাবে <br /> উপাদানগুলির সাথে স্ট্রিংয়ের সমস্ত লাইন ব্রেকগুলি প্রতিস্থাপন করব?


536

আমি কীভাবে জাভাস্ক্রিপ্টের সাথে কোনও মান থেকে লাইন বিরতি পড়তে পারি এবং সমস্ত লাইন বিরতি <br />উপাদানগুলির সাথে প্রতিস্থাপন করতে পারি?

উদাহরণ:

পিএইচপি থেকে নীচে হিসাবে একটি পরিবর্তনশীল পাস হয়েছে:

  "This is man.

     Man like dog.
     Man like to drink.

     Man is the king."

আমি জাভাস্ক্রিপ্ট রূপান্তরিত করার পরে আমার ফলাফলটি এর মতো কিছু দেখতে চাই:

  "This is man<br /><br />Man like dog.<br />Man like to drink.<br /><br />Man is the king."

1
আপনার মূল প্রশ্নে কিছু ভুল? stackoverflow.com/questions/784313/...
harto

1
আপনি জাভাস্ক্রিপ্টে প্রেরণের আগে আপনি পিএইচপি তে nl2br ($ স্ট্রিং) করতেও পারেন।
অ্যালেক্স

1
আমি আগের প্রশ্নটি বন্ধ করতে ভোট দিতে যাচ্ছি, কারণ এটির আরও ভাল উদাহরণ রয়েছে।
পলকহীনতা

2
তারপরে তার প্রাথমিক প্রশ্নটি সম্পাদনা করা উচিত
নিকফ

টেক্সট () দিয়ে কী চলছে তা আমি একটি বিভ্রান্তিকর বোঝাপড়া থেকে এখানে এসেছি। আপনি যা করছেন তা যদি স্ট্যাকওভারফ্লো.com/q/35238362/1467396 দেখুন
ডেভিড

উত্তর:


1202

এটি সমস্ত রিটার্ন এইচটিএমএলে পরিণত করবে

str = str.replace(/(?:\r\n|\r|\n)/g, '<br>');

আপনি যদি অবাক হন তবে কী?: এর অর্থ। একে নন-ক্যাপচারিং গ্রুপ বলা হয়। এর অর্থ হল যে বন্ধনীর মধ্যে রেজেসের গোষ্ঠীটি পরে উল্লেখ করার জন্য মেমরিতে সংরক্ষণ করা হবে না। আপনি আরও তথ্যের জন্য এই থ্রেডগুলি চেক করতে পারেন:
https://stackoverflow.com/a/11530881/5042169 https://stackoverflow.com/a/36524555/5042169


77
কেবল অতিরিক্ত নোট: str.replace("\n", '<br />')(প্রথম যুক্তি একটি নিয়মিত স্ট্রিং) কেবলমাত্র প্রথম ঘটনাটি প্রতিস্থাপন করবে।
সার্জ এস

19
অন্য সংস্করণ (একাধিক লাইন-ব্রেকগুলি প্রতিস্থাপন করতে): str.replace (/ (\ n) + / g, '<br />');
রীতেশ

4
@SergeS। অতিরিক্ত মন্তব্য করার জন্য ধন্যবাদ। সবেমাত্র আমাকে এক টন সময় বাঁচিয়েছে! jsfiddle
EleventyOne

4
@ সার্জস।, String#replaceতার প্রথম যুক্তিকে Stringকোনও পালানো RegExpঘটনা থেকে কোনও পতাকা ছাড়াই জড়িত করে co str.replace('\n', '<br />');সমানstr.replace(new RegExp('\n'), '<br />');
চোখের পলকহীনতা

2
এখানে str.split("\n").join("<br />") jsperf.com/split-join-vs-replace-regex তুলনায় একটি পরীক্ষার কেস RegEx কিছুটা দ্রুত বলে মনে হচ্ছে
এলে

390

যদি আপনার উদ্বেগটি কেবল লাইনব্রেকগুলি প্রদর্শন করে তবে আপনি CSS এর মাধ্যমে এটি করতে পারেন।

<div style="white-space: pre-line">Some test
with linebreaks</div>

জেএসফিডাল: https://jsfiddle.net/5bvtL6do/2/

দ্রষ্টব্য : কোড ফর্ম্যাটিং এবং ইনডেন্টিংয়ের দিকে মনোযোগ দিন, যেহেতু সমস্ত নিউলাইন white-space: pre-lineপ্রদর্শিত হবে (পাঠ্যের পরে শেষ নিউলাইন বাদে, ফিডাল দেখুন)।


59
দুর্দান্ত উত্তর ... আরও upboats প্রয়োজন!
ইয়ান কুইগলি

11
আমি এখানে রেইগেক্সের সন্ধান করতে এসেছি এবং এটি দিয়ে চলে এসেছি। প্রচুর অনুষ্ঠানে লোকেরা এটি সন্ধান করে। আমরা ইমেলগুলির জন্য লাইনব্রেকগুলি ব্যবহার করি এবং কখনও কখনও কখনও, ইমেলটি HTML এ লাইনটি কী দেখায় তা প্রদর্শন করা প্রয়োজন। Perfecto থেকে। প্রশ্নটি অন্য একটি আলোতে দেখার জন্য ধন্যবাদ
মুত্তম্যাট

1
এটি প্রকৃত লাইন বিরতির জন্য কাজ করতে পারে তবে আমি যদি প্রশ্নটিতে "\ n" পছন্দ করি তবে কী হবে? আমি কি সিএসএস দ্বারাও এটি সমাধান করতে পারি?
ফ্রোজিক্স

18
পরিবর্তে white-space: pre-wrap;আমি ব্যবহার পছন্দ করি white-space: pre-line;(সর্বোপরি চূড়ান্ত ব্রেক লাইন যোগ না করার জন্য)
জ্যাম্পোটিন

5
দেখতে সুন্দর তবে প্রথম লাইনের আগে একটি বিশাল জায়গা সম্পর্কে কী বলা যায়? অদ্ভুত
টুলকিট

71

রেজেক্স ছাড়াই:

str = str.split("\n").join("<br />");

2
আপনি যদি "\\ n" করেন তবে আপনি কেবল "n" এ বিভাজন নিয়ে সমস্যাগুলি এড়াতে পারবেন।
ক্রাউডারসপ

10
@ ক্রাউডারসপ হুম? আমি এটি চেষ্টা করেছি এবং \\nএকটি নতুন লাইনে মেলে না, কারণ এটি backslash+ সন্ধান করছে n
পলস্ল্যাটার 19

1
আমি একটা টেস্ট কেস করলাম। রেজিএক্স কিছুটা দ্রুত, তবে নিজের জন্য দেখুন jsperf.com/split-join-vs-replace-regex
এলে

আমি খুঁজে পেয়েছি যে স্ল্যাশ এড়ানো না যাওয়া এই উত্তরটি কাজ করে না। উদাহরণস্বরূপ: str = str.split ("\ n")। Join ("<br />");
ACOMIT001

@ ACOMIT001 আমি অনুমান করি যে এটি নির্ভর করে যে স্ট্রিংটির একটি নতুন লাইন আছে বা একটি কৃষ্ণাঙ্গ এবং এন?
paulslater19

38

এটি পাঠ্য থেকে আসা ইনপুটটির জন্য কাজ করে

str.replace(new RegExp('\r?\n','g'), '<br />');

1
এটি আমার পক্ষে সেরা উত্তর কারণ আপনি কোনও সিস্টেমে ব্যবহৃত \ r ভুলে যাননি
বার্তোমিজেজ জালিউস্কি

1
এটি এই প্রশ্নের সেরা উত্তর। তবে আমি কেবল <br /> নয় <br> <br> নিয়ে যাব এই এক দেখতে stackoverflow.com/questions/1946426/html-5-is-it-br-br-or-br
Kheya

8

যদি গৃহীত উত্তরটি আপনার পক্ষে ঠিক কাজ করে না তবে আপনি চেষ্টা করতে পারেন।

str.replace(new RegExp('\n','g'), '<br />')

এটা আমার জন্য কাজ করেছে।


2
new RegExp('\n', 'g')এর অনুরূপ /\n/g(তাদের নির্মাণকারীর তুলনায় আদিম আক্ষরিক ব্যবহার সম্পর্কে কিছু মিনটিয়া বাদে)।
চোখের পলকহীনতা

2
কারণ যাই হোক না কেন, এটি আমার পক্ষে কাজ করেছে তবে গৃহীত উত্তরটি পায় নি
নিক

1
আহ্, এখানেও একই ... তবে আমার ভুলটি /\n/gস্ট্রিং হিসাবে নির্দিষ্ট করার চেষ্টা করছিল !
ড্যানিয়েল ফোর্টুনভ

7

সিস্টেম নির্বিশেষে:

my_multiline_text.replace(/$/mg,'<br>');

1
সতর্কতা: এটি কোনও 'স্ট্রিং' ট্যাগ যুক্ত করে, এতে কোনও '\ n' থাকলে তা নির্বিশেষে string
mkoeller

4

সম্ভাব্য স্ক্রিপ্ট ইনজেকশন আক্রমণ থেকে রক্ষা করার জন্য বাকী বাক্যটি এনকোড করাও গুরুত্বপূর্ণ

function insertTextWithLineBreaks(text, targetElement) {
    var textWithNormalizedLineBreaks = text.replace('\r\n', '\n');
    var textParts = textWithNormalizedLineBreaks.split('\n');

    for (var i = 0; i < textParts.length; i++) {
        targetElement.appendChild(document.createTextNode(textParts[i]));
        if (i < textParts.length - 1) {
            targetElement.appendChild(document.createElement('br'));
        }
    }
}


2

আপনারা যারা সর্বাধিক অনুমতি দিতে চান তাদের জন্য। <br>পরপর ২ টি , আপনি এটি ব্যবহার করতে পারেন:

let text = text.replace(/(\r?\n){2,}/g, '<br><br>');
text = text.replace(/(\r?\n)/g, '<br>');

প্রথম লাইন: \nOR এর সন্ধান করুন \r\nযেখানে তাদের মধ্যে কমপক্ষে 2 জন একক সারিতে রয়েছে, যেমন \n\n\n\n। তারপরে এটি 2 দিয়ে প্রতিস্থাপন করুনbr

দ্বিতীয়ত লাইন: সব একক জন্য অনুসন্ধান করুন \r\nবা \nএবং তাদের সঙ্গে প্রতিস্থাপন<br>


1

আপনি যদি পিএইচপি থেকে ভেরিয়েবলটি প্রেরণ করেন তবে প্রেরণের আগে আপনি এটি সহ এটি পেতে পারেন:

$string=nl2br($string);

0

এটি ব্রেক সহ সমস্ত নতুন লাইন প্রতিস্থাপন করবে

str = str.replace(/\n/g, '<br>')

আপনি যদি একটি নতুন ব্রেক লাইনের সাথে সমস্ত নতুন লাইন প্রতিস্থাপন করতে চান

str = str.replace(/\n*\n/g, '<br>')

Regex সম্পর্কে আরও পড়ুন: https://dl.icewarp.com/online_help/203030104.htm এটি আপনাকে সর্বদা সহায়তা করবে।


str = str.replace(/\n+/g, '<br>')দ্বিতীয় কেসের ক্ষেত্রেও এর মতো একটি রেজেক্স ব্যবহার করা সম্ভব
মাত্তেও বসো

0

নির্দিষ্ট প্রশ্নের উত্তর না দিয়ে, তবে আমি নিশ্চিত যে এটি কারও সাহায্য করবে ...

যদি আপনার পিএইচপি থেকে আউটপুট থাকে যা আপনি জাভাস্ক্রিপ্ট (সম্ভবত একটি অ্যাজাক্স অনুরোধের ফলস্বরূপ) ব্যবহার করে কোনও ওয়েব পৃষ্ঠায় রেন্ডার করতে চান, এবং আপনি কেবল সাদা স্থান এবং লাইন ব্রেকগুলি ধরে রাখতে চান, কেবল একটি <pre></pre>ব্লকের ভিতরে পাঠ্যটি আবদ্ধ করার বিষয়টি বিবেচনা করুন :

var text_with_line_breaks = retrieve_some_text_from_php();
var element = document.querySelectorAll('#output');
element.innerHTML = '<pre>' + text_with_line_breaks + '</pre>';

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.