JavaRush /جاوا بلاگ /Random-UR /میسج فارمیٹ کلاس
Виталий Рыжаков
سطح
Москва

میسج فارمیٹ کلاس

گروپ میں شائع ہوا۔
اس مضمون میں میں اس کلاس کے بارے میں بات کرنا چاہتا ہوں MessageFormatجو ٹاسک 2412 (ٹاسک 2412) میں استعمال ہوتی ہے۔ کلاس میسیج فارمیٹ - 1کلاس کو 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[] filelimitsString[] filepartform.setFormatByArgumentIndex(0, fileform)MessageFormat formformatChoiceFormat fileformMessageFormat
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 کو حل کرتے وقت آپ کو کوئی مشکل پیش نہیں آئے گی۔
تبصرے
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION