मैं एक संख्या कैसे प्रिंट कर सकता हूं या इसे निश्चित चौड़ाई बनाने के लिए शून्य पैडिंग के साथ एक स्ट्रिंग बना सकता हूं?
उदाहरण के लिए, यदि मेरे पास संख्या है 12
और मैं इसे बनाना चाहता हूं 000012
।
मैं एक संख्या कैसे प्रिंट कर सकता हूं या इसे निश्चित चौड़ाई बनाने के लिए शून्य पैडिंग के साथ एक स्ट्रिंग बना सकता हूं?
उदाहरण के लिए, यदि मेरे पास संख्या है 12
और मैं इसे बनाना चाहता हूं 000012
।
जवाबों:
Fmt पैकेज आपके लिए यह कर सकता है:
fmt.Printf("|%06d|%6d|\n", 12, 345)
0% 06d में ध्यान दें, जो इसे 6 की चौड़ाई का बना देगा और इसे शून्य के साथ पैड कर देगा। दूसरा एक रिक्त स्थान के साथ पैड होगा।
आप इसे यहां क्रिया में देख सकते हैं: http://play.golang.org/p/cinDspMccp
Sprintf
Printf
का प्रयोग करें Printf
से समारोह fmt पैकेज एक साथ width
की 6
और गद्दी चरित्र 0
:
import "fmt"
fmt.Printf("%06d", 12) // Prints to stdout '000012'
width
पूर्णांक निर्दिष्ट करने से पहले प्रारूप निर्दिष्ट ('क्रिया)) को निर्धारित करके कार्यों को सेट करना :
fmt.Printf("%d", 12) // Uses default width, prints '12'
fmt.Printf("%6d", 12) // Uses a width of 6 and left pads with spaces, prints ' 12'
गोलंग (और अधिकांश अन्य भाषाओं) द्वारा समर्थित एकमात्र पैडिंग पात्र रिक्त स्थान और हैं 0
:
fmt.Printf("%6d", 12) // Default padding is spaces, prints ' 12'
fmt.Printf("%06d", 12) // Change to 0 padding, prints '000012'
यह संभव है कि ऋण को घटाकर छपाई को सही ठहराया जाए -
:
fmt.Printf("%-6d", 12) // Padding right-justified, prints '12 '
फ़्लोटिंग पॉइंट नंबरों के लिए सावधान रहें कि चौड़ाई में संपूर्ण प्रारूप स्ट्रिंग शामिल है:
fmt.Printf("%6.1f", 12.0) // Prints '0012.0' (width is 6, precision is 1 digit)
यह ध्यान रखना उपयोगी है कि चौड़ाई *
को एक संख्या के बजाय का उपयोग करके और int
पैरामीटर के रूप में चौड़ाई को पार करके प्रोग्रामेटिक रूप से सेट किया जा सकता है :
myWidth := 6
fmt.Printf("%0*d", myWidth, 12) // Prints '000012' as before
यह उदाहरण के लिए उपयोगी हो सकता है यदि आप जो सबसे बड़ा मूल्य प्रिंट करना चाहते हैं वह केवल रनटाइम पर जाना जाता है ( maxVal
निम्नलिखित उदाहरण में कहा जाता है):
myWidth := 1 + int(math.Log10(float64(maxVal)))
fmt.Printf("%*d", myWidth, nextVal)
अंतिम, यदि आप प्रिंट नहीं करना चाहते हैं stdout
लेकिन स्ट्रिंग लौटाते हैं, तो समान मापदंडों के साथ fmt पैकेजSprintf
से भी उपयोग करें :
s := fmt.Sprintf("%06d", 12) // returns '000012' as a String
इसे प्राप्त करने का एक सरल तरीका है। उपयोग
func padNumberWithZero(value uint32) string {
return fmt.Sprintf("%02d", value)
}
fmt.Sprintf
प्रारूप और कहीं भी इसे मुद्रित किए बिना एक स्ट्रिंग लौटाता है। यहां %02d
कहा गया है कि मूल्य के लिए बाईं ओर पैड शून्य, जिसके पास अंकों की 2 संख्या है। यदि दिए गए मान में 2 या अधिक अंक हैं, तो यह पैड नहीं होगा। उदाहरण के लिए:
आप %03d
अधिक शून्य पैडिंग के लिए उपयोग या अधिक कर सकते हैं ।
प्रश्न " गो लैंग में मुद्रण प्रारूप की सूची " हमें याद दिलाती है कि झंडा भी है:
-
बाईं ओर दाईं ओर रिक्त स्थान के साथ पैड (बाएं-क्षेत्र को औचित्य दें)
DaddyOh/golang-samples/pad.go
यदि आप अन्य स्ट्रिंग अनुक्रमों (' 0
' या ' ' से अधिक जटिल ) के साथ पैड करना चाहते हैं, तो आप अधिक पैडिंग उदाहरण देख सकते हैं :
leftPad(s string, padStr string, pLen int)
rightPad(s string, padStr string, pLen int)
leftPad2Len(s string, padStr string, overallLen int)
rightPad2Len(s string, padStr string, overallLen int)
देखें play.golang.org:
1234567890
leftPad(str, "*", 3) ***1234567890
leftPad2Len(str, "*-", 13) -*-1234567890
leftPad2Len(str, "*-", 14) *-*-1234567890
leftPad2Len(str, "*", 14) ****1234567890
leftPad2Len(str, "*-x", 14) x*-x1234567890
leftPad2Len(str, "ABCDE", 14) BCDE1234567890
leftPad2Len(str, "ABCDE", 4) 7890
rightPad(str, "*", 3) 1234567890***
rightPad(str, "*!", 3) 1234567890*!*!*!
rightPad2Len(str, "*-", 13) 1234567890*-*
rightPad2Len(str, "*-", 14) 1234567890*-*-
rightPad2Len(str, "*", 14) 1234567890****
rightPad2Len(str, "*-x", 14) 1234567890*-x*
rightPad2Len(str, "ABCDE", 14) 1234567890ABCD
rightPad2Len(str, "ABCDE", 4) 1234
-
केवल स्थान मिलता है, मुझे शून्य की आवश्यकता है।