जावा के प्रारूप स्ट्रिंग में $ को समझना


84
 StringBuilder sb = new StringBuilder();
 // Send all output to the Appendable object sb
 Formatter formatter = new Formatter(sb, Locale.US);

 // Explicit argument indices may be used to re-order output.
 formatter.format("%4$2s %3$2s %2$2s %1$2s", "a", "b", "c", "d")
 // -> " d  c  b  a"

इस मामले में, एक $ 2 से क्यों जोड़ा जाता है?

जवाबों:


132

इससे 2कोई लेना-देना नहीं है $:

  • %     = प्रारूप स्ट्रिंग की शुरुआत
  • 4$   = चौथा तर्क ('घ')
  • 2     = दो की चौड़ाई (दाएं-संरेखित)
  • s     = स्ट्रिंग का प्रकार

यह वास्तव में कुरकुरा स्पष्टीकरण धन्यवाद। हालाँकि, जब मैं% 4 $ 2s का उपयोग करता हूं और मेरा तर्क मान 'ABCDEFGH' है तो यह केवल 2 वर्णों को पुनर्प्राप्त नहीं कर रहा है। यह पूर्ण स्ट्रिंग को पुनः प्राप्त करता है। क्यों?
कंदर्प

49

2$साधन यहाँ सूची से दूसरा तर्क डाल दिया। एक संख्या इस $ प्रकार से पहले नहीं है। इसी तरह, 4$इसका मतलब है कि आगे तर्क यहाँ रखो।

स्पष्ट करने के लिए, हम %2$2sप्रारूप को उसके भागों में तोड़ सकते हैं :

  • % - इंगित करता है कि यह एक प्रारूप स्ट्रिंग है

  • 2$ - दिखाता है कि दूसरा मूल्य तर्क यहाँ रखा जाना चाहिए

  • 2 - प्रारूप दो वर्ण लंबा है

  • s - मूल्य को स्ट्रिंग के रूप में प्रारूपित करें

आप दस्तावेज़ में अधिक जानकारी पा सकते हैं ।


यह वास्तव में नीचा दिखाया गया था, जब यह एक गलत जवाब था। जैसा कि अभी यह सही है, डाउनवोट हटा दिया गया है।
स्वेन लिलिएनथाल

1
@Sven - जवाब कभी नहीं बदला, मुझे लगता है कि आपने इसे गलत पढ़ा होगा। मैंने जोड़ा है, लेकिन किसी भी सामग्री को नहीं बदला है।
डेव वेब

ठीक है, जब मैंने इसे पढ़ा है: "2 $ का मतलब है कि सूची से दूसरा तर्क यहां डाल दें।" यह वह नहीं है जिसे मैं एक सही उत्तर के रूप में गिनूंगा।
स्वेन लिलिएनथल

यह अभी भी वास्तव में कहता है कि अब और आपने कहा है कि अब यह सही है।
डेव वेब

अपने आप पर, यह गलत है या कम से कम सवाल का जवाब नहीं दे रहा है, लेकिन इसे संदर्भ में रखें, यह सही है।
स्वेन लिलिएनथाल

4

वे स्थितियुक्त तर्क हैं जहाँ चौड़े तर्क के साथ चौथा के रूप में %4$2sप्रारूप करने के लिए संकेत हैं । 2. यह स्थानीयकरण के लिए तार प्रदान करते समय विशेष रूप से सहायक होता है जहाँ स्रोत कोड को छूने के बिना तर्कों को फिर से व्यवस्थित करने की आवश्यकता होती है।

प्रकारों के लिए प्रारूप निर्दिष्टकर्ता जो दिनांक और समय का प्रतिनिधित्व करने के लिए उपयोग किए जाते हैं उनमें निम्नलिखित सिंटैक्स होते हैं:

%[argument_index$][flags][width]conversion

वैकल्पिक argument_indexएक दशमलव पूर्णांक है जो तर्क सूची में तर्क की स्थिति को दर्शाता है। पहले तर्क द्वारा संदर्भित किया जाता है "1$", दूसरा द्वारा "2$"आदि - फॉर्मेट प्रलेखन


फिर भी, मुझे पसंद है कि .NET के प्रारूप बेहतर हों क्योंकि वे तर्कों की स्थिति को अधिक स्पष्ट करते हैं।
जॉय

4

%: प्रारूप स्ट्रिंग

4$: चौथा मूल्य तर्क

2: चौड़ाई (तर्क मुद्रित होने पर लंबाई)

s: यह एक स्ट्रिंग तर्क रूपांतरण है

उदाहरण के लिए, निम्नलिखित स्निपेट:

StringBuffer sb=new StringBuffer();

Formatter formatter=new Formatter(sb,Locale.UK);

formatter.format("-%4$5s-%3$5s-%2$5s-%1$5s-", "a", "b", "c", "d");

System.out.println(sb);

का एक उत्पादन का उत्पादन:

-    d-    c-    b-    a-

(प्रति तर्क 5 वर्णों की चौड़ाई, रिक्त स्थान के साथ गद्देदार)

और के 5साथ प्रतिस्थापित 2, निम्नलिखित उत्पादन का उत्पादन करेगा:

- d- c- b- a-

फर्क देखें? :)

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