আন্তর্জাতিকীকরণ ইত্যাদির সাথে "রিয়েল ওয়ার্ল্ড" নিদর্শনগুলি করার চেষ্টা করার সময় আমি এটিকে কিছুটা লড়াই করেছি বিশেষত, আমাদের একটি "পছন্দ" ফর্ম্যাট ব্যবহার করার দরকার আছে যেখানে আউটপুটটি প্রদর্শিত মূল্যবোধের উপর নির্ভর করে, এবং java.text.ChoiceFormatএটিই এর জন্য।
কীভাবে এটি করা যায় তার উদাহরণ এখানে রয়েছে:
MessageFormat fmt = new MessageFormat("{0,choice,0#zero!|1#one!|1<{0,number,'#'}|10000<big: {0}}");
int[] nums = new int[] {
0,
1,
100,
1000,
10000,
100000,
1000000,
10000000
};
Object[] a = new Object[1];
for(int num : nums) {
a[0] = num;
System.out.println(fmt.format(a));
}
এটি নিম্নলিখিত আউটপুট উত্পন্ন করে; আমি আশা করি এটি অন্যদের জন্য সহায়ক যারা একই ধরণের জিনিস সম্পাদন করার চেষ্টা করছেন:
zero!
one!
100
1000
10000
big: 100,000
big: 1,000,000
big: 10,000,000
আপনি দেখতে পাচ্ছেন, "পছন্দ" ফর্ম্যাটটি আমাদের ফর্ম্যাট করার মানটি পাস-ইন হওয়ার উপর নির্ভর করে ব্যবহারের জন্য যে ধরণের বিন্যাসটি বেছে নিতে দেয় তা চয়ন করতে দেয়। ছোট সংখ্যা পাঠ্যের সাহায্যে প্রতিস্থাপিত হতে পারে (মূল মানের কোনও প্রদর্শন নয়)। মাঝারি আকারের সংখ্যাগুলি কোনও গ্রুপিং বিভাজনকারী (কমা নেই) দিয়ে দেখানো হয়। বৃহত্তম সংখ্যার মধ্যে আবার কমা অন্তর্ভুক্ত রয়েছে। স্পষ্টতই, এর নমনীয়তা প্রদর্শনের জন্য এটি সম্পূর্ণরূপে স্বীকৃত উদাহরণ java.text.MessageFormat।
#ফর্ম্যাট পাঠ্যে উদ্ধৃত হওয়া সম্পর্কে একটি নোট : যেহেতু উভয়ই ChoiceFormatএবং MessageFormatব্যবহৃত হচ্ছে, উভয়ের মধ্যে মেটাচার্যাক্টারের মধ্যে একটি সংঘর্ষ রয়েছে। ChoiceFormatব্যবহারসমূহ #একটি metacharacter যে মূলত মানে হলো "সমান" হিসাবে যাতে বিন্যাস ইঞ্জিন ক্ষেত্রে যে যেমন জানেন 1#one!আমরা তুলনা করা হয় {0}সঙ্গে 1, এবং যদি তারা সমান হয়, এটা সেই নির্দিষ্ট "পছন্দ" ব্যবহার করে।
তবে #এর অন্য অর্থ রয়েছে MessageFormatএবং এটি একটি মেটাচার্যাক্টর হিসাবে যার অর্থ রয়েছে DecimalFormat: এটি একটি মেটাচার্যাক্টারের অর্থ যার অর্থ "এখানে একটি সংখ্যা রাখুন"।
এটি একটি ChoiceFormatস্ট্রিংয়ে আবৃত হওয়ার কারণে , #উদ্ধৃতি দেওয়া দরকার। যখন ChoiceFormatস্ট্রিং পার্স করা হয়, ঐ কোট কখন subformats ক্ষণস্থায়ী সরিয়ে ফেলা হয় MessageFormat(এবং তারপর উপর DecimalFormat)।
সুতরাং আপনি যখন ব্যবহার করছেন {0,choice,...}, আপনাকে সেই #অক্ষরগুলি, এবং সম্ভবত অন্যদের উদ্ধৃতি দিতে হবে ।
String.valueOf(long)