मैं जावास्क्रिप्ट में कोड की एक से अधिक पंक्ति में एक स्ट्रिंग कैसे तोड़ सकता हूं?


198

क्या कोड की एक पंक्ति को तोड़ने के लिए जावास्क्रिप्ट में एक चरित्र है ताकि यह एक नई रेखा पर होने के बावजूद निरंतर पढ़ा जाए?

कुछ इस तरह....

1. अलर्ट ("कृपया फ़ाइल चुनें   
2. "हटाने के लिए");

जवाबों:


272

अपने उदाहरण में, आप स्ट्रिंग को दो टुकड़ों में तोड़ सकते हैं:

alert ( "Please Select file"
 + " to delete");

या, जब यह एक स्ट्रिंग है, जैसा कि आपके मामले में, आप एक बैकस्लैश का उपयोग कर सकते हैं जैसा कि @Gumbo ने सुझाव दिया है:

alert ( "Please Select file\
 to delete");

ध्यान दें कि यह बैकलैश दृष्टिकोण आवश्यक रूप से पसंद नहीं किया गया है , और संभवतः सार्वभौमिक रूप से समर्थित नहीं है (मुझे इस पर हार्ड डेटा खोजने में परेशानी हुई)। यह है नहीं में ECMA 5.1 कल्पना

अन्य कोड (उद्धरण में नहीं) के साथ काम करते समय, लाइन ब्रेक को अनदेखा किया जाता है, और पूरी तरह से स्वीकार्य है। उदाहरण के लिए:

if(SuperLongConditionWhyIsThisSoLong
  && SuperLongConditionOnAnotherLine
  && SuperLongConditionOnThirdLineSheesh)
{
    // launch_missiles();
}

यदि आप एक बयान को तोड़ सकते हैं?
TTT

17
लेकिन स्वचालित अर्धविराम सम्मिलन तंत्र से सावधान रहें: फ़ंक्शन के अंत में अगले एक पर एक पंक्ति और एक "स्ट्रिंग" पर लौटने की कोशिश करें और आप परिणाम के रूप में अपरिभाषित हो जाते हैं।
कुछ

क्या यह मानक-अनुपालन है? क्या सभी आज्ञाकारी ब्राउज़र इसका समर्थन करेंगे? क्या पुराने ब्राउज़र आज इसका समर्थन करते हैं? इन महत्वपूर्ण प्रश्नों में से कोई भी शामिल नहीं है, -1।
ulidtko

3
ठीक है ... यदि आप पहले से ही नहीं पूछे गए नए प्रश्नों का एक गुच्छा पूछने जा रहे हैं, तो आपको हमें उन्हें जवाब देने का मौका मिलेगा। मैंने असंतोषजनक अनुमान के साथ अपना जवाब अपडेट किया।
माइकल हरन

2
बैकस्लैश से सावधान रहें। यह सभी ब्लैंकों को तब तक खाएगा जब तक कि यह एक खाली न हो। तो उदाहरण "अलर्ट" होगा: कृपया फाइलेट डिलीट को चुनें। यदि आप फ़ाइल और उसके बीच का सफेद स्थान चाहते हैं, तो आपको इसे डी बैकस्लैश से पहले रखना चाहिए।
jgomo3

41

लाइन के अंत में बैकस्लैश लगाएं:

alert("Please Select file\
 to delete");

संपादित करें     मुझे यह नोट करना है कि यह ECMAScript स्ट्रिंग्स का हिस्सा नहीं है क्योंकि लाइन समाप्त करने वाले वर्णों की अनुमति नहीं है:

' LineTerminator ' वर्ण एक स्ट्रिंग शाब्दिक में प्रकट नहीं हो सकता है, भले ही बैकस्लैश द्वारा पूर्ववर्ती हो \। पैदा करने के लिए एक लाइन टर्मिनेटर चरित्र एक स्ट्रिंग शाब्दिक का स्ट्रिंग मान का हिस्सा बनने का सही तरीका जैसे पलायन अनुक्रम का उपयोग करने के लिए है \nया \u000A

इसलिए स्ट्रिंग कॉन्सेप्टन का उपयोग करना बेहतर विकल्प है।


अद्यतन २०१५-०१-०५     ईसीएमएस्क्रिप्ट ५ में स्ट्रिंग शाब्दिक उल्लेख वाक्यविन्यास की अनुमति देते हैं:

एक लाइन टर्मिनेटर चरित्र एक स्ट्रिंग शाब्दिक में प्रकट नहीं हो सकता है, खाली चरित्र अनुक्रम का उत्पादन करने के लिए एक LineContinuation के हिस्से के अलावा । पैदा करने के लिए एक लाइन टर्मिनेटर चरित्र एक स्ट्रिंग शाब्दिक की स्ट्रिंग मान का हिस्सा बनने का सही तरीका जैसे पलायन अनुक्रम का उपयोग करने के लिए है \nया \u000A


1
ECMAScript5 इसे अनुमति देता है: " खाली वर्ण अनुक्रम का निर्माण करने के लिए LineContinuation के एक भाग को छोड़कर एक लाइन टर्मिनेटर वर्ण स्ट्रिंग शाब्दिक में प्रकट नहीं हो सकता है। एक लाइन टर्मिनेटर वर्ण को स्ट्रिंग शाब्दिक के स्ट्रिंग मान का हिस्सा बनाने का सही तरीका है। जैसे एक एस्केप अनुक्रम का उपयोग करने \nया \u000A "
Oriol

1
@Oriol नोट के लिए धन्यवाद, तदनुसार अद्यतन किया गया!
गुमबो

1
क्या यह समस्याग्रस्त है यदि फ़ाइल विंडोज में बनाई गई थी। दूसरे शब्दों में, के \r\nबजाय के साथ समाप्त लाइनों \n?
एडम प्लॉकर

31

ECMAScript 6 टेम्पलेट स्ट्रिंग का परिचय देता है :

टेम्प्लेट स्ट्रिंग स्ट्रिंग शाब्दिक हैं जो एम्बेडेड अभिव्यक्ति की अनुमति देते हैं। आप उनके साथ मल्टी-लाइन स्ट्रिंग्स और स्ट्रिंग इंटरपोलेशन सुविधाओं का उपयोग कर सकते हैं।

उदाहरण के लिए,

alert(`Please Select file   
to delete`);

सतर्क करेगा

Please Select file   
to delete

1
वाह, बहुत बढ़िया। कीबोर्ड पर इन `` को पाने के लिए SHIFT + on दो बार दबाएँ। एक जर्मन कीबोर्ड पर वह कुंजी बैकस्पेस कुंजी के पास है।
नाडु

@Nadu जो एक कीबोर्ड पर निर्भर करता है। मेरी एक `चाबी है। चूंकि यह एक संशोधक है इसलिए इसे सीधे नहीं लिखा जाता है। शायद इसीलिए आपको लगा कि आपको इसे दो बार दबाना चाहिए, लेकिन यह उनमें से दो को लिखेगा। केवल एक लिखने के लिए स्पेसबार दबाएँ।
ओरिऑल

अविश्वसनीय है कि फैंसी हैक्स के बिना मल्टीलाइन स्ट्रिंग्स की अनुमति देने में इतना लंबा समय लगा ... सवाल यह है: लाइन सेपरेटर के रूप में क्या उपयोग किया जाएगा - दस्तावेज़ का हार्डकोड चार्ड (लाइन) या लाइन ब्रेक चार?
स्टैने

1
जब आप * .js फ़ाइल का आवर्धन करना चाहते हैं, तो `` में समस्या है।
रस्कोलनिकोव

1
पर विचार करें, जो अभी भी मार्च के 2018 में वैश्विक इस्तेमाल किया ब्राउज़रों के केवल 89% caniuse.com के अनुसार टेम्पलेट तार का समर्थन caniuse.com/#feat=template-literals
FFirmenich


4

नोट करने के लिए दिलचस्प है। कोशिश की:

alert("Some \
    string \
    wrapped \
    across \
    mutliples lines.")

और यह काम किया। हालांकि, दुर्घटना पर!, अंतिम बैकस्लैश के बाद एक अंतरिक्ष चरित्र था (अन्य सभी बैकस्लैश लाइन के अंत में थे)। और इससे जावास्क्रिप्ट में एक त्रुटि हुई! हालाँकि, इस स्थान को हटाने से त्रुटि ठीक हो गई।

यह कॉर्डोवा का उपयोग करके एंड्रॉइड के लिए एडीटी में है।


1
इस मुद्दे से लड़ने में मेरे दिन का अधिकांश समय बीता और मैंने भी आपको धन्यवाद दिया, कि किसी भी स्लैश के बाद एक अंतरिक्ष चरित्र मेरे आयनिक ऐप को संकलित नहीं कर रहा था। धन्यवाद!
rekordboy

1
विश्वास नहीं किया जा सकता है कि किसी ने भी टिप्पणी की है कि इसमें Some\n<4 spaces>string\n<4 spaces>wrapped\n<4 spaces>across\n<4 spaces>multiple lines.
कड़े के


0

आप लॉजिकल चंक्स में एक लंबे स्ट्रिंग स्थिरांक को तोड़ सकते हैं और उन्हें एक सरणी में असाइन कर सकते हैं। फिर joinएक खाली स्ट्रिंग के साथ एक सीमांकक के रूप में करें।

var stringArray = [
  '1. This is first part....',
  '2. This is second part.....',
  '3. Finishing here.'
];

var bigLongString = stringArray.join('');
console.log(bigLongString);

आउटपुट होगा:

  1. यह पहला भाग है .... २। यह दूसरा भाग है ..... ३। यहां खत्म हो रहा है।

इस तरह एक मामूली प्रदर्शन हिट है, लेकिन आप कोड पठनीयता और रखरखाव में लाभ प्राप्त करते हैं।


0

VSCode उपयोगकर्ताओं के लिए यहां एक अच्छा समाधान है , अगर एक स्ट्रिंग कई लाइनों में टूटती है , तो समस्या का कारण बनता है (जब मैंने एक लंबे JWT टोकन का परीक्षण करना था, और किसी तरह टेम्पलेट शाब्दिक का उपयोग करके इस चाल का सामना नहीं किया था।


-3

मैंने ऊपर दिए गए कई सुझावों की कोशिश की, लेकिन क्रोम कोड निरीक्षक में ILLEGAL चरित्र चेतावनी मिली। निम्नलिखित ने मेरे लिए काम किया (केवल क्रोम में परीक्षण किया गया था!)

alert('stuff on line 1\\nstuff on line 2);

जैसे बाहर आता है ...

stuff on line 1
stuff on line 2

डबल बैकस्लैश नोट करें! ... यह महत्वपूर्ण प्रतीत होता है!


-5

कोड में किसी भी मैनुअल ब्रेक की आवश्यकता नहीं है। जहाँ आप तोड़ना चाहते हैं, बस \ n जोड़ें।

alert ("Please Select file \n to delete");

यह जैसे अलर्ट दिखाएगा

Please select file 
to delete.

नीचे मतदाता, क्या आप डाउनवोट का कारण बता सकते हैं। यह समाधान मेरे लिए हमेशा काम करता है।
नरेंद्र

27
मुझे नहीं पता कि किसने वोट दिया या क्यों; लेकिन सिर्फ एक अनुमान: सेशन यह जानना चाहता था कि आउटपुट में एक लाइन ब्रेक डालने के बजाय कोड की कई लाइनों में एक टेक्स्ट शाब्दिक कैसे बढ़ाया जाए।
ज़ारेफेथ
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.