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);
}