JavaRush /Blog Jawa /Random-JV /Kelas MessageFormat
Виталий Рыжаков
tingkat
Москва

Kelas MessageFormat

Diterbitake ing grup
Ing artikel iki aku arep ngomong babagan kelas MessageFormatsing digunakake ing tugas 2412 (task2412). Format Pesen Kelas - 1Kelas kasebut MessageFormatdirancang kanggo nggawe senar. Kelas Java iki njupuk sakumpulan obyek, ngowahi format, banjur nglebokake strings sing diformat menyang cithakan ing lokasi sing cocog. Iki minangka alternatif (utawa malah tambahan) kanggo metode statis String.format. Pisanan, conto prasaja nggunakake kelas Jawa iki tanpa nggawe obyek, nanging nggunakake cara statis:
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);
Ing kene cara statis diarani MessageFormat.format, sing cithakan senar lan, nyatane, obyek sing bakal dilebokake ing papan sing diwatesi kurung diterusake minangka argumen {}. Posisi obyek diwiwiti ing ditemtokake ing kurung 0, uga jinis format, yen ana. Output bakal kaya iki:
At 21:25:54 on 28 апр. 2018 г., there was a disturbance in the Force on planet 7.
Conto ing ngisor iki wis nggawe obyek saka kelas 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));
Nalika obyek kelas digawe, MessageFormatcithakan senar diterusake menyang konstruktor. Sabanjure, nalika nelpon cara formating obyek, Uploaded saka obyek sing bakal dilebokake ing cithakan string liwati ana minangka pitakonan. Output bakal kaya iki:
The disk "MyDisk" contains 1 273 file(s).
Sampeyan uga bisa nggawe manawa teks sing dibutuhake dipilih gumantung saka nilai variabel. A jenis implementasine saka operator if...else, mung nggunakake kelas ChoiceFormat. Iki kode:
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));
Kode iki, gumantung saka nilai variabel, countngganti output baris kaya ing ngisor iki:
  • yen count = 1kesimpulane kaya kiye

    Я могу подтянуться 1 раз.
  • yen count = 2kesimpulane kaya kiye

    Я могу подтянуться 2 раза.
  • yen count = 7kesimpulane kaya kiye

    Я могу подтянуться 7 раз.
Kode iki nggawe larik double[] filelimitssing nemtokake watesan nilai ing ngendi output string bakal diganti. Lan array String[] filepartnuduhake varian banget saka strings sing bisa digunakake. Kahanan kanggo milih pilihan baris saka nilai variabel ditemtokake minangka nderek: opsi bakal dipilih filepart[j]yen filelimits[j] =< count < filelimits[j+1]. Sabanjure, obyek digawe lan susunan lan ChoiceFormat fileformditerusake menyang konstruktor . Kanthi metode kasebut, kita ngandhani obyek yen metode kasebut diarani , banjur kanggo indeks 0 ing cithakan baris, gunakake format sing ditemtokake ing obyek kasebut . nggih. Ing asas, sampeyan bisa uga wis duwe idea ora tau nggunakake kelas Jawa , nanging ngerti sing iki ora kabeh lonceng lan whistles. Ana kode iki: 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));
Punika fitur utama ing array Format[] testFormats. Ing array iki kita nambah obyek (ngleksanakake kelas abstrak Format) sing tanggung jawab kanggo ngowahi format obyek sing ditetepake ing array Object[] testArgs. Format[] testFormatsYen obyek ora perlu format, banjur null. pattform.setFormats(testFormats)Sabanjure, kita nggunakake cara kanggo ngandhani obyek MessageFormat pattformyen kabeh indeks ing pola baris kudu nggunakake format sing ditetepake ing array Format[] testFormats. Kanggo conto iki, output bakal dadi:
There are no files on ADisk.
28.04.18 22:10
Iku kabeh, lan muga-muga sampeyan ora bakal ngalami kesulitan nalika ngrampungake masalah 2412.
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION