কীভাবে আমি Intএকটি 7-অক্ষর দীর্ঘকে রূপান্তর করতে পারি String, যাতে এটি 123রূপান্তরিত হয় "0000123"?
উত্তর:
জাভা লাইব্রেরিতে স্ট্রিংওপস সমৃদ্ধ স্ট্রিং ক্লাস থেকে অ্যাক্সেসযোগ্য সংখ্যার ফর্ম্যাটিং সমর্থনটি দুর্দান্ত (দুর্দান্ত হিসাবে) রয়েছে :
scala> "%07d".format(123)
res5: String = 0000123
scala> "%07d".formatLocal(java.util.Locale.US, 123)
res6: String = 0000123
স্কেল ২.১০ পোস্ট সম্পাদনা করুন : ফমমিলের পরামর্শ অনুসারে, ২.১০ থেকে, এখানে একটি ফর্ম্যাটিং স্ট্রিং ইন্টারপোলটার (স্থানীয়করণ সমর্থন করে না) রয়েছে:
val expr = 123
f"$expr%07d"
f"${expr}%07d"
এপ্রিল 2019 সম্পাদনা করুন:
0বিন্যাস নির্দিষ্টকরণকারক থেকে বাদ দিন from উপরের ক্ষেত্রে, এটি হবে f"$expr%7d"। 2.12.8 REPL এ পরীক্ষিত। কোনও মন্তব্যে প্রস্তাবিত স্ট্রিং প্রতিস্থাপন করার দরকার নেই, বা 7অন্য মন্তব্যে প্রস্তাবিত হিসাবে একটি স্পষ্ট স্পেস রেখে দিতে হবে না ।s"%${len}d".format("123")f"$a%07d"(আপনার যদি val/ var aসুযোগ আছে)।
"% 7d".format(123)
সংক্ষিপ্ত উত্তর:
"1234".reverse.padTo(7, '0').reverse
দীর্ঘ উত্তর:
স্কালা স্ট্রিংঅ্যাপস (এতে অন্তর্ভুক্ত রূপান্তরগুলির কারণে স্কাল স্ট্রিং অবজেক্টগুলির যে পদ্ধতিগুলির একটি দুর্দান্ত সেট রয়েছে) এর একটি padToপদ্ধতি রয়েছে, যা আপনার স্ট্রিংয়ে একটি নির্দিষ্ট পরিমাণে অক্ষর যুক্ত করে। উদাহরণ স্বরূপ:
"aloha".padTo(10,'a')
"অ্যালোহআআআআআ" ফিরে আসবে। নোট করুন স্ট্রিংয়ের এলিমেন্ট টাইপটি একটি চর, সুতরাং চারপাশে একক উদ্ধৃতি 'a'।
আপনার সমস্যা একটু ভিন্ন যেহেতু আপনি প্রয়োজন বোধ করেন পূর্বে লিখুন পরিবর্তে অক্ষর সংযোজন তাদের। এজন্য আপনাকে স্ট্রিংটি বিপরীতমুখী করতে হবে, ফিল-আপ অক্ষরগুলি সংযোজন করতে হবে (স্ট্রিংটি বিপরীত হওয়ার কারণে আপনি এখনই তাদের প্রপেন্ড করবেন) এবং তারপরে চূড়ান্ত ফলাফল পেতে পুরো জিনিসটিকে আবার বিপরীত করুন।
আশাকরি এটা সাহায্য করবে!
paddingদ্বারা প্রকাশ করা হয় %02dজন্য 0দৈর্ঘ্য করতে পূর্বে সমাধান করা 2:
scala> val i = 9
i: Int = 9
scala> val paddedVal = f"${num}%02d"
paddedVal: String = 09
scala> println(paddedVal)
09
val paddedVal = f"${num}%02d"পরিবর্তন হওয়া উচিত numজন্যi
f"$num%02d"(এখানে কোনও বন্ধনী প্রয়োজন নেই)
huynhjl আমাকে সঠিক উত্তরে মারধর করেছে, সুতরাং এখানে একটি বিকল্প রয়েছে:
"0000000" + 123 takeRight 7
"0000000" + Int.MaxValue takeRight 7=> এর বেশি সংখ্যার জন্য ব্যর্থ হবে 7483647। প্রশ্নের আক্ষরিক ব্যাখ্যার দ্বারা "প্রযুক্তিগতভাবে" সঠিক হলেও, পাঠক প্যাডড সংখ্যাটি digit সংখ্যা ছাড়িয়ে to সংখ্যা ছাড়িয়ে যেতে চান না যদি সংখ্যাটি বড় হয়।
যদি এই প্রশ্নোত্তর প্রবণতা সংশ্লেষ হয়,
scala> import java.text._
import java.text._
scala> NumberFormat.getIntegerInstance.asInstanceOf[DecimalFormat]
res0: java.text.DecimalFormat = java.text.DecimalFormat@674dc
scala> .applyPattern("0000000")
scala> res0.format(123)
res2: String = 0000123
আপনার কি নেতিবাচক সংখ্যাগুলি মোকাবেলা করতে হবে? যদি না হয়, আমি শুধু করব
def str(i: Int) = (i % 10000000 + 10000000).toString.substring(1)
বা
def str(i: Int) = { val f = "000000" + i; f.substring(f.length() - 7) }
অন্যথায়, আপনি ব্যবহার করতে পারেন NumberFormat:
val nf = java.text.NumberFormat.getIntegerInstance(java.util.Locale.US)
nf.setMinimumIntegerDigits(7)
nf.setGroupingUsed(false)
nf.format(-123)