जावा - स्ट्रिंग के भीतर चर भी शामिल है?


114

ठीक है, इसलिए हम सभी को पता होना चाहिए कि आप चर को तार में शामिल कर सकते हैं:

String string = "A string " + aVariable;

क्या ऐसा करने का कोई तरीका है:

String string = "A string {aVariable}";

दूसरे शब्दों में: उद्धरण चिह्नों को बंद करने और प्लस चिह्नों को जोड़ने के बिना। यह बहुत अनाकर्षक है।


10
@ चंडीगढ़ कृपया पूछें क्यों नहीं, बल्कि यदि संभव हो तो समझाएं। यह सिर्फ यह है कि मैं इसे कैसे करना पसंद करूंगा। धन्यवाद।
ग्रे एडम्स

3
ग्रूवी का उपयोग करें, फिर आप "A string $ {aVariable}" कर पाएंगे।
कालेब ब्रासी

2
इस सवाल पर चर्चा की गई समान चीजों के लिए कई तरह की तकनीक है , लेकिन String.format()अंतर्निहित भाषा है।
ig0774

@KalebBrasee यह सही लगता है, लेकिन जब मैं भाषाओं को संशोधित करने की बात करता हूं तो मैं हमेशा हिचकिचाता हूं। मैं खुद को वापस सेट नहीं करना चाहता।
ग्रे एडम्स

1
@GrayAdams ग्रूवी आपको वापस सेट नहीं करता है, यह आपको मुफ्त में सेट करता है! : डी
कालेब ब्रासी

जवाबों:


123

आप हमेशा String.format (....) का उपयोग कर सकते हैं। अर्थात,

String string = String.format("A String %s %2d", aStringVar, anIntVar);

मुझे यकीन नहीं है कि यह आपके लिए पर्याप्त आकर्षक है, लेकिन यह काफी उपयोगी हो सकता है। सिंटैक्स प्रिंटफ और java.util.Formatter के लिए समान है। यदि मैंने सारणीबद्ध संख्यात्मक डेटा दिखाना चाहते हैं तो मैंने इसका विशेष रूप से उपयोग किया है।


2
मुझे पता है कि यह एक राय का विषय है, लेकिन मैं यह नहीं देखता कि formatएक साधारण स्ट्रिंग कॉन्सेप्टन अभिव्यक्ति की तुलना में अधिक आकर्षक कैसे है। कहाँ formatहै जब आप गद्दी, संख्या स्वरूपण, आदि सब करने की ज़रूरत है अपने स्वयं में आता है।
स्टीफन C

1
@StephenC: मैं आपसे बिल्कुल असहमत नहीं हूं। लेकिन यह स्ट्रिंग स्वरूपण के लिए एक उपयोगी विकल्प है, खासकर जब आप कहते हैं कि पैडिंग करने की आवश्यकता है और जैसा कि मैं ऊपर कहता हूं (यानी, सारणीबद्ध संख्यात्मक डेटा दिखाने के लिए)। मैंने इसका उपयोग रक्त रसायन और सीबीसी परिणाम रिपोर्ट को प्रारूपित करने के लिए काफी किया है।
होल्सक्राफ्ट

@StephenC मुझे कुछ कारणों से प्रारूप पसंद है: सबसे पहले, '% d' प्लेटफ़ॉर्म लाइन सीमांकक का उपयोग करता है। दूसरा, आप अंत में सभी चर आसानी से पा सकते हैं। आप आसानी से सुधार कर सकते हैं या यहां तक ​​कि आपके द्वारा उपयोग किए जाने वाले चर को भी पुनः व्यवस्थित कर सकते हैं। गलतियों से बचना आसान है (जैसे 1 + "oops"), खासकर यदि आप फाइंडबग्स का उपयोग करते हैं (जो प्रारूप स्ट्रिंग और इनपुट मापदंडों को पार करता है)। और, जैसा कि पूछने वाला कहता है, कई मामलों में यह अधिक पठनीय है। बेशक, यह शर्म की बात है कि formatविधि को स्थिर बना दिया गया है, यह एक बेवकूफ डिजाइन गलती थी।
मार्टन बोदवेस

@owlstead - "निश्चित रूप से, यह शर्म की बात है कि प्रारूप विधि को स्थिर बना दिया गया है, यह एक बेवकूफ डिजाइन की गलती थी।" । है ना? formatलक्ष्य स्ट्रिंग से कैसे संबंधित होगा ? निश्चित रूप से आप सुझाव नहीं दे रहे हैं कि हमें लिखने की उम्मीद की जानी चाहिए "A String %s %2d".format(aStringVar, anIntVar)... क्या आप हैं?
स्टीफन C

1
@owlstead - "asFormat" सही नहीं होगा। इसका तात्पर्य है कि विधि एक प्रारूप ऑब्जेक्ट बना रही है और वापस कर रही है।
स्टीफन सी

70

इसे स्ट्रिंग इंटरपोलेशन कहा जाता है; यह जावा में इस तरह मौजूद नहीं है।

एक दृष्टिकोण String.format का उपयोग करना है:

String string = String.format("A string %s", aVariable);

एक और तरीका यह है कि वेलोसिटी या फ्रीमर्कर जैसी टेम्प्लेटिंग लाइब्रेरी का उपयोग किया जाए


38

इसके अलावा विचार करें java.text.MessageFormat, जो एक संबंधित वाक्यविन्यास का उपयोग करता है जिसमें संख्यात्मक तर्क सूचकांक होते हैं। उदाहरण के लिए,

String aVariable = "of ponies";
String string = MessageFormat.format("A string {0}.", aVariable);

stringनिम्नलिखित में परिणाम :

A string of ponies.

आमतौर पर, वर्ग का उपयोग इसके संख्यात्मक और अस्थायी स्वरूपण के लिए किया जाता है। JFreeChartलेबल स्वरूपण का एक उदाहरण यहां वर्णित है ; वर्ग RCInfoएक खेल की स्थिति फलक को प्रारूपित करता है।


1
CSharp से आने वाले किसी व्यक्ति के लिए यह अधिक सरल है क्योंकि यह स्ट्रिंग # के समान है। C # में।
Mojtaba

0

स्ट्रिंग के भीतर चर शामिल करने के लिए आप स्ट्रिंग प्रारूप का उपयोग कर सकते हैं

मैं स्ट्रिंग में 2 चर शामिल करने के लिए इस कोड का उपयोग करता हूं:

स्ट्रिंग myString = String.format ("यह मेरा स्ट्रिंग% s% 2d है", variable1Name, variable2Name);

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.