Siirry pääsisältöön

MaskDecorator

Avaa ChatGPT:ssä
24.10
Java API

MaskDecorator on staattinen apuluokka, jota käytetään maskien soveltamiseen merkkijonoille, numeroille, päivämäärille ja ajoille syöttökentän ulkopuolella. Se käyttää samaa maskisyntaksia kuin webforJ:n maskatut kenttäkomponentit, mikä tekee arvojen muotoilusta ja jäsentämisestä johdonmukaista—oli kyseessä sitten näyttölappu, Table renderöijä tai muu sovelluksesi sijainti.

Käytä MaskDecorator-luokkaa, kun sinun tarvitsee muotoilla arvoja ohjelmallisesti näytettäväksi, ei interaktiivista syöttöä varten, kuten taulukon solujen renderöijissä, vain luku -tunnisteissa, viedyissä raporteissa tai missä tahansa kontekstissa, jossa lomakekenttä ei ole sopiva. Interaktiivista muotoilua käyttäjän kirjoittaessa varten käytä sen sijaan maskattua kenttäkomponenttia.

Merkkijonojen maskaus

Käytä forString() -menetelmää, jotta voit soveltaa merkki-maskia tavanomaiseen merkkijonoon:

String result = MaskDecorator.forString("abc123", "AAA-000");
// → "ABC-123"

Maski määrittää, mitkä merkit hyväksytään jokaisessa sijainnissa.

Maskimerkit

MerkkiKuvaus
XMikä tahansa tulostettava merkki
aMikä tahansa aakkosellinen merkki
AMikä tahansa aakkosellinen merkki; pienet kirjaimet muuttuvat suuriksi
0Mikä tahansa numero (0–9)
zMikä tahansa numero tai kirjain
ZMikä tahansa numero tai kirjain; pienet kirjaimet muuttuvat suuriksi

Muut merkit maskissa käsitellään kirjaimellisesti ja lisätään sellaisinaan tulosteeseen. Virheellisiä merkkejä syötteessä ei oteta huomioon, lyhyet syötteet täydennetään välilyönneillä ja pitkät syötteet katkaistaan maskin mahtuvuuden mukaan.

Esimerkit

MaskDecorator.forString("1234567890", "(000) 000-0000");  // → "(123) 456-7890"
MaskDecorator.forString("a1b2c3", "A0A 0A0"); // → "A1B 2C3"
MaskDecorator.forString("1234", "ZZZZ-0000"); // → "1234- " (täydennetty)

Numeroiden maskaus

Käytä forNumber() -menetelmää muotoillaksesi numeerista arvoa numeromaskin avulla:

String result = MaskDecorator.forNumber(1234567.89, "#,###,##0.00");
// → "1,234,567.89"

Maskimerkit

MerkkiKuvaus
0Korvataan aina numerolla (0–9)
#Estää etunollat. Korvataan täyttömerkillä desimaalipisteen vasemmalla puolella. Peränumeroissa oikealla puolella, korvataan tilalla tai nollalla. Muuten, korvataan numerolla
,Käytetään ryhmittelyerottimena. Korvataan täyttömerkillä, jos numeroita ei ole vielä asetettu; muuten esitetään pilkku
-Näyttää -, jos numero on negatiivinen; korvataan täyttömerkillä, jos positiivinen
+Näyttää +, jos positiivinen, tai -, jos negatiivinen
$Aina tuottaa dollarimerkin
(Lisätään (, jos numero on negatiivinen; korvataan täyttömerkillä, jos positiivinen
)Lisätään ), jos numero on negatiivinen; korvataan täyttömerkillä, jos positiivinen
CRLisätään CR negatiivisille numeroille; kaksi välilyöntiä positiivisille numeroille
DRLisätään CR negatiivisille numeroille; DR positiivisille numeroille
*Aina lisätään tähti
.Merkitsee desimaalipistettä. Korvataan täyttömerkillä, jos tulosteessa ei esiinny numeroita. Desimaalin jälkeen täyttömerkki muuttuu välilyönniksi
BAina muuttuu välilyönniksi; mikä tahansa muu kirjaimellinen merkki kopioidaan sellaisenaan

Merkit -, +, $ ja ( voivat kellua: ensimmäinen esiintymä siirretään viimeiseen sijaintiin, jossa # tai , korvattiin täyttömerkillä.

Pyöristyskäyttäytyminen

forNumber() pyöristää arvot vastaamaan maskin desimaalitarkkuutta. Esimerkiksi MaskDecorator.forNumber(12.34567, "###0.00") tuottaa " 12.35".

Esimerkit

MaskDecorator.forNumber(1234.5,    "###,##0.00");  // → "  1,234.50"
MaskDecorator.forNumber(-9876.0, "###,##0.00-"); // → " 9,876.00-"
MaskDecorator.forNumber(42.0, "$###,##0.00"); // → " $42.00"
MaskDecorator.forNumber(0.5, "#0.000"); // → " 0.500"

Päivämäärien maskaus

Käytä forDate() -menetelmää muotoillaksesi LocalDate-arvoa päivämäärämaskin avulla:

LocalDate date = LocalDate.of(2025, 7, 4);
String result = MaskDecorator.forDate(date, "%Mz/%Dz/%Yl");
// → "07/04/2025"

Käytä parseDate()-menetelmää parsitaksesi maskatun päivämäärämerkkijonon takaisin LocalDate:ksi:

LocalDate date = MaskDecorator.parseDate("07/04/2025", "%Mz/%Dz/%Yl");
// → LocalDate.of(2025, 7, 4)

Paikalliskielitietoista ylikuormitusta on saatavana, kun parsitaan merkkijonoja, jotka sisältävät viikonnumero viittauksia:

LocalDate date = MaskDecorator.parseDate("07/04/2025", "%Mz/%Dz/%Yl", Locale.US);

Päivämäärämuotoindikaattorit

FormaattiKuvaus
%YVuosi
%MKuukausi
%DPäivä

Muokkaimet

Valinnainen muokkaaja seuraa heti muotoindikaattoria:

MuokkaajaKuvaus
zNollatäyte
sLyhyt tekstiesitys
lPitkä tekstiesitys
pPakattu numero
dDesimaali (oletusmuoto)

Esimerkit

LocalDate d = LocalDate.of(2025, 3, 5);

MaskDecorator.forDate(d, "%Mz/%Dz/%Yl"); // → "03/05/2025"
MaskDecorator.forDate(d, "%Dz.%Mz.%Yz"); // → "05.03.25"
MaskDecorator.forDate(d, "%Dl, %Ml %Dz"); // → "Wednesday, March 05"
MaskDecorator.forDate(d, "%Yl-%Mz-%Dz"); // → "2025-03-05"

Aikojen maskaus

Käytä forTime() -menetelmää muotoillaksesi LocalTime-arvoa aikamaskin avulla:

LocalTime time = LocalTime.of(14, 30, 0);
String result = MaskDecorator.forTime(time, "%Hz:%mz");
// → "14:30"

Käytä parseTime()-menetelmää parsitaksesi maskatun aikamerkkijonon takaisin LocalTime:ksi:

LocalTime time = MaskDecorator.parseTime("14:30", "%Hz:%mz");
// → LocalTime.of(14, 30)

Paikalliskielitietoista ylikuormitusta on saatavana, kun parsitaan merkkijonoja, jotka sisältävät paikallistettuja AM/PM arvoja:

LocalTime time = MaskDecorator.parseTime("02:30 pm", "%hz:%mz %p", Locale.US);

Aikamuotoindikaattorit

FormaattiKuvaus
%HTunti (24-tuntinen kello)
%hTunti (12-tuntinen kello)
%mMinuutti
%sSekunti
%pam/pm

Muokkaimet

Aikamaskit käyttävät samoja muokkaimia kuin päivämäärämaskit. Katso Päivämäärämutaajat.

Esimerkit

LocalTime t = LocalTime.of(9, 5, 30);

MaskDecorator.forTime(t, "%Hz:%mz:%sz"); // → "09:05:30"
MaskDecorator.forTime(t, "%hz:%mz %p"); // → "09:05 am"
MaskDecorator.forTime(t, "%Hz%mz"); // → "0905"

Päivämäärän ja ajan maskaus

Käytä forDateTime() -menetelmää muotoillaksesi LocalDateTime-arvoa yhdistetyllä päivämäärä- ja aikamaskeilla:

LocalDateTime dt = LocalDateTime.of(2025, 7, 4, 14, 30, 0);
String result = MaskDecorator.forDateTime(dt, "%Mz/%Dz/%Yl %Hz:%mz");
// → "07/04/2025 14:30"

Muotoindikaattorit

forDateTime() tukee kaikkia päivämäärä- ja aikamuotoindikaattoreita missä tahansa yhdistelmässä. Katso Päivämäärämuotoindikaattorit ja Aikamuotoindikaattorit täydellistä luetteloa varten.

Muokkaimet

Kaikki Päivämäärämuokkaimet käsittääva muokkaimet soveltuvat sekä päivämäärä- että aikasideille yhdistetyssä maskissa.

Esimerkit

LocalDateTime dt = LocalDateTime.of(2025, 7, 4, 14, 30, 0);

MaskDecorator.forDateTime(dt, "%Mz/%Dz/%Yl %Hz:%mz"); // → "07/04/2025 14:30"
MaskDecorator.forDateTime(dt, "%Mz/%Dz/%Yl %Hz:%mz:%sz"); // → "07/04/2025 14:30:00"
MaskDecorator.forDateTime(dt, "%Dz.%Mz.%Yz %hz:%mz %p"); // → "04.07.25 02:30 pm"

Null-arvojen käsittely

varoitus

Kaikki for*() ja parse*() -menetelmät palauttavat null, jos syöte on virheellinen tai sitä ei voida jäsentää. Varmista aina, että tulos ei ole null ennen sen käyttöä sovelluksesi logiikassa.

String formatted = MaskDecorator.forDate(date, "%Mz/%Dz/%Yl");
if (formatted != null) {
label.setText(formatted);
}