আমি কীভাবে নোড.জেজে মাল্টি-লাইন স্ট্রিং করব?


128

নোড.জেএস এর উত্থানের সাথে, জাভাস্ক্রিপ্টে মাল্টি-লাইন স্ট্রিংগুলি আরও প্রয়োজনীয় হয়ে উঠছে।

  1. ব্রাউজারে কাজ না করলেও নোড.জেএসে এটি করার কোনও বিশেষ উপায় আছে কি?
  2. আমি সমর্থন করতে পারি এমন করার জন্য কি কোনও পরিকল্পনা বা কমপক্ষে কোনও বৈশিষ্ট্যের অনুরোধ রয়েছে?

আমি ইতিমধ্যে জানি যে আপনি \n\প্রতিটি লাইনের শেষে ব্যবহার করতে পারেন , এটি আমি চাই না।


1
কেন পৃথিবীতে আপনাকে হার্ড লাইনের রিটার্ন inোকানো দরকার? ডিওএম-তে কোনও কিছুই এটি সমর্থন করে না ("প্রাক" বাদে) এবং অন্য সমস্ত সাধারণ রিটার্নের ধরণের কোনও যত্ন নেই।
jcolebrand

সুতরাং আমি ডানদিকে প্রত্যাবর্তন ছাড়াই বামে ট্যাবগুলি দিয়ে শেষ করব না। আমি উভয় বা না উভয়ই পেতে পছন্দ করি। এই মুহুর্তে আমি print( '<div>')আমার এইচটিএমএল প্রিন্ট করতে ব্যবহার করছি । এর কোনও ট্যাব বা রিটার্ন নেই যা "ঝরঝরে", তবে পার্ল <<EOF..EOFস্টাইলের স্ট্রিং বা জাভা-স্টাইলের জেএসপি ফাইলটি ব্যবহার করা আরও সহজ । যাইহোক, মাল্টি-লাইন স্ট্রিংয়ে আসার সময় আমার ভেরিয়েবলগুলি ইনপুট করতে সক্ষম হওয়া দরকার। আমি আপাতত ছাড়া করব।
ব্রায়ান ফিল্ড

9
@ জকোলেব্রান্ড: নোড.জেএস মূলত ডিওএম হেরফেরের সাথে সম্পর্কিত নয়। এটি একটি সম্পূর্ণ অ্যাপ্লিকেশন বিকাশের পরিবেশ। Nodejs.org
রায় টিঙ্কার

@ রয়টাইঙ্কার হ্যাঁ, তবে সে সময় তিনি ব্রাউজারগুলি ডেকেছিলেন এবং তারপরে তিনি অ- \nবাস্তবায়ন ডেকেছিলেন , তাই ... এটি কেবলমাত্র ব্রাউজারগুলিরই বেশ ভাল।
jcolebrand

@ জর্জবেইলি আপনি যদি এখনও স্ট্যাক ওভারফ্লো ব্যবহার করেন তবে আপনি কি এখানে সঠিক উত্তরটি ঠিক করতে পারবেন?
মাইকম্যাকানা

উত্তর:


164

নোড ভি 4 এবং নোডের বর্তমান সংস্করণ

ES6 (এবং v4 এর চেয়ে বেশি নোডের সংস্করণ) হিসাবে, জাভাস্ক্রিপ্টে একটি নতুন "টেম্পলেট আক্ষরিক" অন্তর্নিহিত টাইপ যুক্ত হয়েছিল (ব্যাক-টিকস "` "দ্বারা চিহ্নিত) যা বহু-লাইন স্ট্রিংগুলি নির্মাণ করতেও ব্যবহার করা যেতে পারে :

`this is a 
single string`

যা মূল্যায়ণ হবে: 'this is a\nsingle string'

মনে রাখবেন যে, প্রথম লাইন শেষে সম্পর্কে newline হয় ফলে স্ট্রিং অন্তর্ভুক্ত করা হয়েছে।

প্রোগ্রামারগুলিকে স্ট্রিং তৈরি করতে মঞ্জুরি দেওয়ার জন্য টেমপ্লেট লিটারালগুলি যুক্ত করা হয়েছিল যেখানে মান বা কোডটি সরাসরি স্ট্রিং লিটারে ইনজেক্ট করা যেতে পারে যেখানে ব্যবহার না করা util.formatবা অন্যান্য টেম্প্লেটার ছাড়াই :

let num=10;

console.log(`the result of ${num} plus ${num} is ${num + num}.`);

যা "10 টি 10 ​​এর ফলাফল 20 হবে" মুদ্রণ করবে " কনসোল থেকে।

নোডের পুরানো সংস্করণ

নোডের পুরানো সংস্করণটি "লাইন ধারাবাহিকতা" অক্ষর ব্যবহার করতে পারে যা আপনাকে মাল্টি-লাইন স্ট্রিং লিখতে দেয় যেমন:

'this is a \
single string'

যা মূল্যায়ণ হবে: 'this is a single string'

মনে রাখবেন যে প্রথম লাইনের শেষে থাকা নিউলাইনটি ফলাফলযুক্ত স্ট্রিংয়ের অন্তর্ভুক্ত নয়


আমি মনে করি আমি স্ট্যাকওভারফ্লো . com/ প্রশ্নগুলি / ৮০৫১০7 / ব্যবহার করে শেষ করব । আমি এটিতে প্রসারিত করতে পারি যাতে আমি ভেরিয়েবলগুলি ব্যবহার করতে পারি। এটি নিশ্চিতভাবে সৃজনশীল হবে! তবে যেহেতু এটি নোড.জেএস, তাই আমার ব্রাউজারের সামঞ্জস্যতা সম্পর্কে চিন্তা করতে হবে না এবং আমার ক্ষেত্রে এমনকি সংস্করণ সামঞ্জস্যতাও নয়।
ব্রায়ান ফিল্ড

6
"জাভাস্ক্রিপ্ট বহু-লাইন স্ট্রিং সমর্থন করে না ..." এটি ইএস 5 এর মতো করে, এবং এটি ভি 8-তে (গুগলের জাভাস্ক্রিপ্ট ইঞ্জিন) রয়েছে, সম্ভবত সম্ভবত নোডজেএসে (যা ভি 8 ব্যবহার করে)। দেখুন LineContinuation মধ্যে [অনুচ্ছেদ 7.8.4] * ( es5.github.com/#x7.8.4 )। সরঞ্জাম সমর্থন কিছু সময়ের জন্য স্কেচি হতে পারে।
টিজে ক্রোডার

এটি io.js এ তবে নোড.জেএস এখনও নেই - আমি আরও কয়েকটি লিঙ্কের সাথে একটি উত্তর যুক্ত করেছি
সাইমন ডি

1
নোড +.০+ এখন স্বতন্ত্রভাবে মাল্টলাইন স্ট্রিং সমর্থন করে।
রব রাইচ

46

মাল্টলাইন স্ট্রিংগুলি জাভাস্ক্রিপ্টের বর্তমান অংশ (ES6 সাল থেকে) এবং node.js v4.0.0 এবং আরও নতুনতে সমর্থিত।

var text = `Lorem ipsum dolor 
sit amet, consectetur 
adipisicing 
elit.  `;

console.log(text);

2
এই উত্তরটি সঙ্গে সঙ্গে শীর্ষে ভোট দেওয়া উচিত! টেম্পলেট স্ট্রিংয়ের বিশদগুলির জন্য বিকাশকারী.মোজিলা.আর.ইন- ইউএস / ডকস / ওয়েবে / জাভা স্ক্রিপ্ট / রেফারেন্স / দেখুন দেখুন ।
ব্যবহারকারী 3413723

2
আপনি লক্ষ করতে চান যে আপনি সহজেই টেমপ্লেটের অভ্যন্তরে {{ভেরিয়েবল} সিনট্যাক্স যুক্ত করে ভেরিয়েবলগুলি যুক্ত করতে পারেন (
ks

40

আপনি যখন মাল্টলাইন স্ট্রিং বোঝাতে চাইছেন তখন আপনি ঠিক কী খুঁজছেন।

আপনি কি এমন কিছু সন্ধান করছেন:

var str = "Some \
    String \
    Here";

"এখানে কিছু স্ট্রিং" হিসাবে মুদ্রিত হবে কোনটি?

যদি তা হয় তবে মনে রাখবেন যে উপরেরটি বৈধ জাভাস্ক্রিপ্ট, তবে এটি নয়:

var str = "Some \ 
    String \
    Here";

পার্থক্য কি? পরে একটি স্থান \। এটি ডিবাগ করতে মজা করুন।


ভাল। এটি আমাকে কোনও চরিত্র না রেখে after এর পরে স্থানটি প্রদর্শন করতে দেবে না।
jcolebrand

1
@ জকোলেব্রানড: হ্যাঁ, বেশ মজাদার নয়: পি
রবার্ট


1
এটি একটি নোংরা হ্যাক। অনুগ্রহ করে না!
রায়নস

1
ধন্যবাদ @ রবার্ট, '\' অন্তর্দৃষ্টি পরে স্থানটি আমাকে কিছুটা সময় বাঁচায়!
gpestana

8

কটাক্ষপাত mstring node.js. জন্য মডিউল

এটি একটি সহজ ছোট মডিউল যা আপনাকে জাভাস্ক্রিপ্টে একাধিক-লাইনের স্ট্রিং দেয়।

শুধু এটি করুন:

var M = require('mstring')

var mystring = M(function(){/*** Ontario Mining and Forestry Group ***/})

পেতে

mystring === "Ontario\nMining and\nForestry\nGroup"

এবং thats প্রায় কাছাকাছি এটি.

এটি কীভাবে
নোড.জেজে কাজ করে, আপনি .toStringকোনও ফাংশনের পদ্ধতিকে কল করতে পারেন এবং এটি আপনাকে কোনও মন্তব্য সহ ফাংশন সংজ্ঞাটির উত্স কোড দেবে। একটি নিয়মিত প্রকাশ মন্তব্যটির বিষয়বস্তু ধরে ফেলে।

হ্যাঁ, এটি হ্যাক। ডোমিনিক তারের কাছ থেকে দূরে মন্তব্য দ্বারা অনুপ্রাণিত ।


দ্রষ্টব্য: মডিউলটি (2012/13/11 হিসাবে) বন্ধ হওয়ার আগে হোয়াইটস্পেসের অনুমতি দেয় না ***/, তাই আপনাকে এটি নিজের মধ্যে হ্যাক করতে হবে।


1
অথবা আপনার মিস্ট্রিংয়ের শাখা ব্যবহার করুন যার মধ্যে শ্বেতস্পেস ফিক্স রয়েছে। ধন্যবাদ! github.com/davidmurdoch/mstring
দ্রুসকা

6

লোকেরা এখানে যা পোস্ট করছে তার একদিকে যেমন আমি শুনেছি আধুনিক জাভাস্ক্রিপ্ট ভিএমএসে যোগ দেওয়ার চেয়ে কংক্রিটেশন আরও দ্রুত হতে পারে। অর্থ:

var a = 
[ "hey man, this is on a line",
  "and this is on another",
  "and this is on a third"
].join('\n');

এর চেয়ে ধীর হবে:

var a = "hey man, this is on a line\n" + 
        "and this is on another\n" +
        "and this is on a third";    

কিছু কিছু ক্ষেত্রে. http://jsperf.com/string-concat-versus-array-join/3

অন্য একদিকে যেমন আমি কফিস্ক্রিপ্টে এটি আকর্ষণীয় বৈশিষ্ট্যগুলির মধ্যে একটি পাই । হ্যাঁ, হ্যাঁ, আমি জানি, বিদ্বেষীরা ঘৃণা করবে।

html = '''
       <strong>
         cup of coffeescript
       </strong>
       '''

এটি এইচটিএমএল স্নিপেটের জন্য বিশেষত দুর্দান্ত। আমি এটির ব্যবহারের কারণ বলছি না, তবে আমার ইচ্ছা এটি একমা জমিতে অবতীর্ণ হবে :-(।

তামাশা


1
আমার পক্ষে কফিস্ক্রিপ্টের মধ্যে কেবল ভুলটি হ'ল গ্রোভির সর্বশেষ আমি যা যা পরীক্ষা করেছিলাম তা ভুল। যখন একটি ফাইল রূপান্তরিত .coffeeহয় .js, লাইন নম্বরগুলি ঝাঁকুনি দেওয়া হয়। আমি কফিস্ক্রিপ্ট চেষ্টা করে দেখিনি, তবে যখন আমি গ্রোভির চেষ্টা করেছি, উত্পন্ন .javaফাইলগুলি না পেয়ে ডিবাগ করা আমার পক্ষে বেশ কঠিন মনে হয়েছিল ।
ব্রায়ান ফিল্ড

আমি কফি কিছু যুক্তিসঙ্গতভাবে বড় প্রকল্প লিখেছি। আপনাকে সংকলিত কোডটি দেখতে হবে। এটি অবশ্য পড়া সহজ। ইমো নোড সম্প্রদায়ের কফিস্ক্রিপ্ট সহ এখনও একটি অগ্রহণযোগ্য কলঙ্ক রয়েছে, যদিও এতে বেশ কয়েকটি বড় প্রকল্প লেখা রয়েছে (zombie.js, Pow, riak-js)। আমি বর্তমানে আমার ছোট ছোট কিছু ওএসএসের উপরে পোর্টিং করছি, কারণ লোকেরা 'ওহ, কফি, ইয়াক' বলে এবং তাত্ক্ষণিকভাবে এগিয়ে যায়, যদিও আপনাকে লাইব্রেরি ব্যবহার করতে কফি ব্যবহার করতে হবে না।
জোশ

আমি কফিস্ক্রিপ্টের একটি ঘৃণা। : পি তবে, আমি অবশ্যই '' 'স্ট্রিং ব্লকের ভক্ত! বা ... পিএইচপি হেরডোক সিনট্যাক্স।
বিএমিনার

অ্যারে প্যাটার্ন (জোড় ('\ n') ব্যবহার করে) বেশিরভাগ ক্ষেত্রে সাদামাটা-পুরানো স্ট্রিং কনটেনটেশনের চেয়ে ধীর হবে।
বিএমিনার

1
আই 7 এবং নীচে বাদে, এটি সত্য। এবং আপনি নোট করবেন, আমি বলেছিলাম এবং jsperf লিঙ্ক করা।
জোশ


1

আপনি যদি io.js ব্যবহার করেন তবে এটি মাল্টি-লাইন স্ট্রিংগুলির যেমন ECMAScript 6 তে সমর্থন করে in

var a =
`this is
a multi-line
string`;

তথ্যের জন্য http://davidwalsh.name/es6-io এ "নতুন স্ট্রিং পদ্ধতি" এবং ট্র্যাকিং সামঞ্জস্যের জন্য http://kangax.github.io/compat-table/es6/ এ "টেম্পলেট স্ট্রিংগুলি" দেখুন ।


1

গৃহীত উত্তর ছাড়াও:

`this is a 
single string`

যা এটির মূল্যায়ন করে: 'এটি একটি sing n সসিং স্ট্রিং'।

আপনি যদি স্ট্রিং ইন্টারপোলেশন ব্যবহার করতে চান তবে কোনও নতুন লাইন ছাড়াই, কেবল স্বাভাবিক স্ট্রিংয়ের মতো ব্যাকস্ল্যাশ যুক্ত করুন:

`this is a \
single string`

=> 'এটি একক স্ট্রিং'।

ম্যানুয়াল হোয়াইটস্পেস মনে রাখবেন যদিও প্রয়োজনীয়:

`this is a\
single string`

=> 'এটি ইসিংল স্ট্রিং'


0

ভ্যানিলা জাভাস্কিপ্ট মাল্টি-লাইন স্ট্রিং সমর্থন করে না। ভাষা প্রাক-প্রসেসরগুলি আজকাল সম্ভাব্য হয়ে উঠছে।

কফিস্ক্রিপ্ট, এর মধ্যে সর্বাধিক জনপ্রিয় এই বৈশিষ্ট্যটি রয়েছে তবে এটি ন্যূনতম নয়, এটি একটি নতুন ভাষা। গুগলের ট্রেসারের সংকলকটি সুপারকেট হিসাবে ভাষায় নতুন বৈশিষ্ট্য যুক্ত করে, তবে আমি মনে করি না যে মাল্টি-লাইন স্ট্রিংগুলি যুক্ত করা বৈশিষ্ট্যগুলির মধ্যে একটি।

আমি জাভাস্ক্রিপ্টের একটি ন্যূনতম সুপারসেট তৈরি করতে চাই যা মাল্টলাইন স্ট্রিং এবং আরও কয়েকটি বৈশিষ্ট্য সমর্থন করে। আমি কফিস্ক্রিপ্টের প্রাথমিক সংকলক লেখার আগে কিছুক্ষণ আগে এই ছোট্ট ভাষাটি শুরু করেছি। আমি এই গ্রীষ্মে এটি শেষ করার পরিকল্পনা করছি।

প্রাক-সংকলকগুলি যদি বিকল্প না হয় তবে স্ক্রিপ্ট ট্যাগ হ্যাকও রয়েছে যেখানে আপনি এইচটিএমএল-তে কোনও স্ক্রিপ্ট ট্যাগে আপনার মাল্টি-লাইন ডেটা সংরক্ষণ করেন তবে এটি একটি কাস্টম প্রকার দিন যাতে এটি স্পষ্ট না হয়। তারপরে জাভাস্ক্রিপ্ট ব্যবহার করে, আপনি স্ক্রিপ্ট ট্যাগের সামগ্রীগুলি বের করতে পারেন।

এছাড়াও, আপনি যদি সোর্স কোডের যে কোনও লাইনের শেষে একটি put রাখেন, এটি নিউলাইনটিকে এমনভাবে উপেক্ষা করার কারণ করবে যাতে এটি ছিল না। আপনি যদি নতুন লাইনটি চান, তবে আপনাকে "\ n \" দিয়ে লাইনটি শেষ করতে হবে।

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