আমি কীভাবে একটি নম্বর মুদ্রণ করতে পারি বা এটিকে প্রস্থ স্থির করতে শূন্য প্যাডিং দিয়ে স্ট্রিং তৈরি করতে পারি?
উদাহরণস্বরূপ, আমার যদি নম্বর থাকে 12এবং আমি এটি তৈরি করতে চাই 000012।
আমি কীভাবে একটি নম্বর মুদ্রণ করতে পারি বা এটিকে প্রস্থ স্থির করতে শূন্য প্যাডিং দিয়ে স্ট্রিং তৈরি করতে পারি?
উদাহরণস্বরূপ, আমার যদি নম্বর থাকে 12এবং আমি এটি তৈরি করতে চাই 000012।
উত্তর:
Fmt প্যাকেজটি আপনার জন্য এটি করতে পারে:
fmt.Printf("|%06d|%6d|\n", 12, 345)
আউটপুট:
|000012| 345|
% 06d এ 0 টি লক্ষ্য করুন, এটি এটির 6 প্রস্থ তৈরি করবে এবং জিরো দিয়ে প্যাড করবে। দ্বিতীয়টি স্পেস দিয়ে প্যাড করবে।
এটি নিজের জন্য এখানে চেষ্টা করুন: http://play.golang.org/p/cinDspMccp
Sprintfপরিবর্তেPrintf
ব্যবহার করুন Printfথেকে ফাংশন FMT প্যাকেজ একটি সঙ্গে widthএর 6এবং প্যাডিং চরিত্র 0:
import "fmt"
fmt.Printf("%06d", 12) // Prints to stdout '000012'
বিন্যাস নির্দিষ্টকরণকারকের ('ক্রিয়াপদ') এর আগে সরাসরি একটি পূর্ণসংখ্যা স্থাপন করে প্রস্থটি নির্ধারণ করে :
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("%06.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
fmt.Printf("%6.1f", 12.0)প্রিন্টগুলি নয় 0012.0`12.0` (ফাঁকা প্যাডিং)। 0 প্যাডিংয়ের জন্য আমাদের fmt.Printf("%06.1f", 12.0)পরিবর্তে ব্যবহার করা দরকার ।
এটি অর্জনের একটি সহজ উপায় রয়েছে। ব্যবহার
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
যারা ডান প্যাড চান তাদের জন্য আপনি এটি করতে পারেন:
str2pad := "12"
padWith := "0"
amt2pad := 6
//This will make sure there is always 6 characters total, padded on the right side
//Note to check if strings.Repeat returns a negative value
paddedStr := str2pad + strings.Repeat(padWith, amt2pad - len(str2pad))
//Outputs 120000
-কেবল স্থান দেয়, আমার শূন্য দরকার।