اس مضمون میں میں اس کلاس کے بارے میں بات کرنا چاہتا ہوں
MessageFormat
جو ٹاسک 2412 (ٹاسک 2412) میں استعمال ہوتی ہے۔ کلاس کو MessageFormat
تار بنانے کے لیے ڈیزائن کیا گیا ہے۔ یہ جاوا کلاس اشیاء کا ایک سیٹ لیتی ہے، انہیں فارمیٹ کرتی ہے، اور پھر فارمیٹ شدہ تاروں کو مناسب جگہوں پر ٹیمپلیٹ میں داخل کرتی ہے۔ یہ جامد طریقہ کا ایک قسم کا متبادل (یا اس کے علاوہ بھی) ہے String.format
۔ سب سے پہلے، اس جاوا کلاس کو بغیر کسی شے کو بنائے، لیکن جامد طریقہ استعمال کرنے کی ایک سادہ مثال:
int planet = 7;
String event = "a disturbance in the Force";
String result = MessageFormat.format(
"At {0, time, medium} on {0, date}, there was {1} on planet {2, number, integer}.",
new Date(), event, planet);
System.out.println(result);
یہاں ایک جامد طریقہ کو کہا جاتا ہے MessageFormat.format
، جس کے لیے سٹرنگ ٹیمپلیٹ اور درحقیقت ایسی اشیاء جو قوسین کے ذریعے محدود کردہ جگہوں میں داخل کی جائیں گی، بطور دلیل پاس کیے جاتے ہیں {}
۔ سے شروع ہونے والی آبجیکٹ کی پوزیشن قوسین میں بیان کی گئی ہے 0
، نیز فارمیٹنگ کی قسم، اگر کوئی ہے۔ آؤٹ پٹ اس طرح ہو گا:
At 21:25:54 on 28 апр. 2018 г., there was a disturbance in the Force on planet 7.
مندرجہ ذیل مثال پہلے ہی کلاس کا ایک آبجیکٹ بناتی ہے MessageFormat
۔
int fileCount = 1273;
String diskName = "MyDisk";
Object[] testArgs = {fileCount, diskName};
MessageFormat form = new MessageFormat(
"The disk \"{1}\" contains {0} file(s).");
System.out.println(form.format(testArgs));
جب کلاس آبجیکٹ بنایا جاتا ہے، تو MessageFormat
اسٹرنگ ٹیمپلیٹ اس کے کنسٹرکٹر کو بھیج دیا جاتا ہے۔ اگلا، جب کسی شے پر کسی طریقہ کو کال کرتے ہیں format
تو، آبجیکٹ کی ایک صف جو سٹرنگ ٹیمپلیٹ میں داخل کی جائے گی وہاں دلیل کے طور پر پاس کی جاتی ہے۔ آؤٹ پٹ اس طرح ہو گا:
The disk "MyDisk" contains 1 273 file(s).
یہ یقینی بنانا بھی ممکن ہے کہ متغیر کی قدر کے لحاظ سے مطلوبہ متن کا انتخاب کیا گیا ہو۔ آپریٹر کے نفاذ کی ایک قسم if...else
، صرف کلاس کا استعمال کرتے ہوئے ChoiceFormat
. یہ کوڈ ہے:
MessageFormat form = new MessageFormat("Я могу {1} {0}.");
int count = 2;
String exercise = "подтянуться";
Object[] testArgs = {count, exercise};
double[] filelimits = {0,2,5};
String[] filepart = {"{0} раз","{0} раза","{0} раз"};
ChoiceFormat fileform = new ChoiceFormat(filelimits, filepart);
form.setFormatByArgumentIndex(0, fileform);
System.out.println(form.format(testArgs));
یہ کوڈ، متغیر کی قدر پر منحصر ہے، count
لائن کے آؤٹ پٹ کو اس طرح تبدیل کرتا ہے:
-
اگر
count = 1
نتیجہ اس طرح ہےЯ могу подтянуться 1 раз.
-
اگر
count = 2
نتیجہ اس طرح ہےЯ могу подтянуться 2 раза.
-
اگر
count = 7
نتیجہ اس طرح ہےЯ могу подтянуться 7 раз.
double[] filelimits
جو اقدار کی حدود کو بتاتا ہے جس پر سٹرنگز کا آؤٹ پٹ تبدیل ہو جائے گا۔ اور صف String[] filepart
سٹرنگز کی ان مختلف حالتوں کی نشاندہی کرتی ہے جنہیں استعمال کیا جا سکتا ہے۔ متغیر ویلیو سے لائن آپشن کو منتخب کرنے کی شرائط کا تعین اس طرح کیا جاتا ہے: آپشن کو منتخب کیا جائے گا filepart[j]
اگر filelimits[j] =< count < filelimits[j+1]
۔ اگلا، ایک آبجیکٹ بنایا جاتا ہے اور صفوں کو ChoiceFormat fileform
اس کے کنسٹرکٹر کو منتقل کیا جاتا ہے ۔ طریقہ کار کے ساتھ، ہم آبجیکٹ کو بتاتے ہیں کہ جب طریقہ کہا جاتا ہے ، تو قطار ٹیمپلیٹ میں انڈیکس 0 کے لیے، وہ فارمیٹنگ استعمال کریں جو آبجیکٹ میں بتائی گئی تھی ۔ ٹھیک. اصولی طور پر، آپ کو جاوا کلاس کبھی استعمال نہ کرنے کا خیال ہو سکتا ہے ، لیکن جان لیں کہ یہ سب گھنٹیاں اور سیٹیاں نہیں ہیں۔ یہ کوڈ ہے: double[] filelimits
String[] filepart
form.setFormatByArgumentIndex(0, fileform)
MessageFormat form
format
ChoiceFormat fileform
MessageFormat
MessageFormat pattform = new MessageFormat("There {0} on {1}.\n{2} {2}");
int count = 0;
Date date = new Date();
Object[] testArgs = {count, "ADisk", date, date};
double[] filelimits = {0,1,2};
String[] filepart = {"are no files","is one file","are {0} files"};
ChoiceFormat fileform = new ChoiceFormat(filelimits, filepart);
Format[] testFormats
= {fileform, null, DateFormat.getDateInstance(DateFormat.SHORT), DateFormat.getTimeInstance(DateFormat.SHORT)};
pattform.setFormats(testFormats);
System.out.println(pattform.format(testArgs));
یہاں صف میں اہم خصوصیت ہے Format[] testFormats
. اس صف میں ہم ایسی اشیاء شامل کرتے ہیں (خلاصہ کلاس کو لاگو کرنا Format
) جو صف میں بیان کردہ اشیاء کو فارمیٹ کرنے کے ذمہ دار ہیں Object[] testArgs
۔ Format[] testFormats
اگر آبجیکٹ کو فارمیٹنگ کی ضرورت نہیں ہے ، تو null
. pattform.setFormats(testFormats)
اگلا، ہم آبجیکٹ کو یہ بتانے کے لیے طریقہ استعمال کرتے ہیں MessageFormat pattform
کہ قطار کے پیٹرن میں تمام اشاریہ جات کو صف میں بیان کردہ فارمیٹنگ کا استعمال کرنا چاہیے Format[] testFormats
۔ اس مثال کے لیے، آؤٹ پٹ ہو گا:
There are no files on ADisk.
28.04.18 22:10
بس، اور میں امید کرتا ہوں کہ مسئلہ 2412 کو حل کرتے وقت آپ کو کوئی مشکل پیش نہیں آئے گی۔
GO TO FULL VERSION