जावा स्ट्रिंग प्रारूप का उपयोग करके एक पूर्णांक प्रारूपित करें


129

मैं सोच रहा था कि क्या यह संभव है, जावा में String.format पद्धति का उपयोग करके, पूर्णांक पूर्ववर्ती शून्य देने के लिए?

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

1 बन जाएगा 001
2 बन जाएगा 002
...
11 बन जाएगा 011
12 बन जाएगा 012
...
526 रहेगा 526
... आदि

फिलहाल मैंने निम्नलिखित कोड की कोशिश की है:

String imageName = "_%3d" + "_%s";

for( int i = 0; i < 1000; i++ ){
    System.out.println( String.format( imageName, i, "foo" ) );
}

दुर्भाग्य से, यह 3 खाली स्थानों के साथ संख्या से पहले है। क्या इसके बजाय शून्य के साथ संख्या को पूर्ववर्ती करना संभव है?


जवाबों:


172

%03dपूर्णांक के लिए प्रारूप विनिर्देशक में उपयोग करें । 0साधन संख्या शून्य से भरे अगर यह कम से कम तीन है अंक (इस मामले में) होगा।

Formatterअन्य संशोधक के लिए डॉक्स देखें ।


211
String.format("%03d", 1)  // => "001"
//              │││   └── print the number one
//              ││└────── ... as a decimal integer
//              │└─────── ... minimum of 3 characters wide
//              └──────── ... pad with zeroes instead of spaces

java.util.Formatterअधिक जानकारी के लिए देखें ।


13

यदि आप अपाचे कॉमन-लैंग नामक तीसरे पक्ष के पुस्तकालय का उपयोग कर रहे हैं, तो निम्न समाधान उपयोगी हो सकता है:

StringUtilsअपाचे कॉमन्स-लैंग के वर्ग का उपयोग करें :

int i = 5;
StringUtils.leftPad(String.valueOf(i), 3, "0"); // --> "005"

के रूप StringUtils.leftPad()में तेजी से हैString.format()


StringUtils.leftPad एक और अच्छा विकल्प है और यह तर्क दिया जा सकता है कि यह अधिक पठनीय है और यह आपको अन्य पात्रों के साथ पैड करने की अनुमति देता है। मेरे पास एक Google है, लेकिन मुझे ऐसा कुछ भी नहीं मिला जो पुष्टि करता हो कि यह तेज़ है - क्या आप इसके लिए कुछ सबूत दे सकते हैं?
माई हेड हर्ट्स

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