2013-04-08 3 views
6

में कंसोल के लिए लिखा जा रहा किसी को भी एक सिस्टम कंसोल के लिए एक mutli लाइन स्ट्रिंग लिखने और है कि पाठ ब्लॉक इंडेंट किया जा करने के लिए एक विधि का सुझाव कर सकते हैं? मैं अपेक्षाकृत हल्के वजन की तलाश में हूं क्योंकि इसका उपयोग केवल कमांड लाइन प्रोग्राम के लिए मदद प्रदर्शित करने के लिए किया जा रहा है।एक बहु लाइन पैरा इंडेंट करने के लिए कैसे जावा

+1

आप एक स्ट्रिंग है लाइनब्रेक शामिल है, या आप ऑटो रैपिंग चाहते हो, या कार्य करें:

String output = "foo\nbar\nbaz\n" String indented = output.replaceAll("(?m)^", "\t"); System.out.println(indented); 

इस उत्पादन का उत्पादन आपके पास बस कई लाइनें हैं और उन्हें कुछ सारणीबद्ध प्रारूप में संरेखित करना चाहते हैं? संक्षेप में: कृपया इनपुट और वांछित आउटपुट का उदाहरण दें। – Cephalopod

+1

@ एरियन। मुझे ऑटो-रैपिंग चाहिए। मनुष्य पेजों को स्वरूपित करने के समान कुछ। मैं कुछ हल्के वजन की उम्मीद कर रहा था, लेकिन शायद कुछ प्रकार की टेम्पलेट भाषा ही एकमात्र तरीका है। – BillMan

+0

रिक्त स्थान पर स्ट्रिंग को विभाजित करने और लाइन चौड़ाई से अधिक होने पर लाइन ब्रेक डालने के बारे में क्या? – Cephalopod

उत्तर

26

नोट: नीचे वर्णित दृष्टिकोण प्रश्न की टिप्पणियों में @BillMan द्वारा वर्णित अद्यतन आवश्यकताओं को पूरा नहीं करता है। यह स्वचालित रूप से लाइनों कि कंसोल लाइन की लंबाई से अधिक लंबे नहीं लपेट करेगा - यदि रैपिंग कोई मुद्दा नहीं है केवल इस दृष्टिकोण का उपयोग।


एक सरल विकल्प के रूप में, आप इस प्रकार String.replaceAll() इस्तेमाल कर सकते हैं:

String output = <your string here> 
String indented = output.replaceAll("(?m)^", "\t"); 

आप जावा नियमित अभिव्यक्ति के साथ अपरिचित हैं, तो यह इस प्रकार काम करता है:

  • (?m) बहु मोड सक्षम बनाता है। यह output में प्रत्येक पंक्ति के बजाय एक ही पंक्ति के रूप में output इलाज (जो डिफ़ॉल्ट है) की, व्यक्तिगत रूप से माना जाता है का मतलब है।
  • ^ प्रत्येक पंक्ति के शुरू होने से मिलान एक regex है।
  • \t (अर्थात प्रत्येक पंक्ति की शुरुआत) पूर्ववर्ती regex के प्रत्येक मैच में एक टैब वर्ण द्वारा प्रतिस्थापित किया जा करने के लिए कारण बनता है।

उदाहरण के लिए, निम्न कोड:

 
	foo 
	bar 
	baz 
+0

मुझे नहीं लगता कि यह है कि क्या ओ पी की तलाश में है, लाइनों के रूप में है कि बहुत लंबे समय तक कंसोल द्वारा लिपटे हैं और इंडेंट नहीं हैं। मुझे लगता है कि यहां क्या आवश्यक है एक तरीका है कि ए) एन चार सीमा (जैसे 80 वर्ण) के लिए लपेटता है लेकिन शब्दों पर विभाजित होता है और बी) प्रत्येक पंक्ति को इंडेंट करता है, यहां तक ​​कि जो लोग लपेटे गए हैं। – joelittlejohn

+1

@joelittlejohn: आप सही हैं - अपडेट की गई आवश्यकताओं (टिप्पणियों के रूप में * * मैंने आखिरी बार इस प्रश्न को देखा) मेरे द्वारा वर्णित दृष्टिकोण से मुलाकात नहीं की गई है। यद्यपि समान आवश्यकताओं वाले अन्य लोगों के लिए यह अभी भी उपयोगी सलाह हो सकती है। मैंने शीर्ष पर उस प्रभाव के लिए एक अस्वीकरण जोड़ा है। उसे मेरी जानकारी मे लाने के लिए धन्यवाद। – Mac

संबंधित मुद्दे