Overslaan naar hoofdinhoud

MaskDecorator

Openen in ChatGPT
24.10
Java API

MaskDecorator is een statische utilityklasse voor het toepassen van maskers op strings, getallen, datums en tijden buiten een invoerveld. Het gebruikt dezelfde maskersyntax als de gemaskeerde veldcomponenten van webforJ, waardoor het eenvoudig is om waarden consistent te formatteren en te parseren—of het nu in een displaylabel, een Table renderer, of op een andere plek in je app is.

Gebruik MaskDecorator wanneer je waarden programmeertmatig wilt formatteren voor weergave in plaats van voor interactieve invoer, zoals in tabelcelrenderers, alleen-lezen labels, geëxporteerde rapporten, of in elke context waar een formulierinvoerveld niet geschikt is. Voor interactieve formatting terwijl een gebruiker typt, gebruik je in plaats daarvan een gemaskeerde veldcomponent.

Masking strings

Gebruik forString() om een karaktermasker toe te passen op een eenvoudige stringwaarde:

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

Het masker bepaalt welke karakters op elke positie worden geaccepteerd.

Mask characters

KarakterBeschrijving
XElk afdrukbaar karakter
aElk alfabetisch karakter
AElk alfabetisch karakter; kleine letters worden omgezet naar hoofdletters
0Elk cijfer (0–9)
zElk cijfer of letter
ZElk cijfer of letter; kleine letters worden omgezet naar hoofdletters

Elk ander karakter in het masker wordt behandeld als een literal en wordt onveranderd in de output ingevoegd. Ongeldige karakters in de invoer worden stilzwijgend genegeerd, korte invoer wordt opgevuld met spaties en lange invoer wordt ingekort om in het masker te passen.

Voorbeelden

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

Masking numbers

Gebruik forNumber() om een numerieke waarde te formatteren met behulp van een getalmasker:

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

Mask characters

KarakterBeschrijving
0Altijd vervangen door een cijfer (0–9)
#Onderdrukt leidende nullen. Wordt vervangen door het opvulkarakter links van de decimaal. Voor achtergaande cijfers rechts wordt vervangen door een spatie of nul. Anders wordt vervangen door een cijfer
,Wordt gebruikt als een groepscheidingsteken. Wordt vervangen door het opvulkarakter als er nog geen cijfers zijn geplaatst; anders wordt het weergegeven als een komma
-Toont - als het getal negatief is; vervangen door het opvulkarakter als het positief is
+Toont + als het positief is, of - als het negatief is
$Resultaat altijd een dollarteken
(Voegt ( in als het getal negatief is; vervangen door het opvulkarakter als het positief is
)Voegt ) in als het getal negatief is; vervangen door het opvulkarakter als het positief is
CRVoegt CR in voor negatieve getallen; twee spaties voor positieve getallen
DRVoegt CR in voor negatieve getallen; DR voor positieve getallen
*Voegt altijd een asterisk in
.Merkt de decimale punt aan. Wordt vervangen door het opvulkarakter als er geen cijfers in de output verschijnen. Na de decimaal wordt het opvulkarakter een spatie
BWordt altijd een spatie; elk ander literair karakter wordt onveranderd gekopieerd

De karakters -, +, $ en ( kunnen zweven: de eerste keer dat ze voorkomen, wordt verplaatst naar de laatste positie waar een # of , werd vervangen door het opvulkarakter.

Afrondgedrag

forNumber() rondt waarden af om overeen te komen met de decimale precisie in het masker. Bijvoorbeeld, MaskDecorator.forNumber(12.34567, "###0.00") produceert " 12.35".

Voorbeelden

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"

Masking dates

Gebruik forDate() om een LocalDate waarde te formatteren met een datummasker:

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

Gebruik parseDate() om een gemaskeerde datumstring terug te parseren naar een LocalDate:

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

Een locale-gevoelige overload is beschikbaar bij het parseren van strings die weeknummerreferenties bevatten:

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

Date format indicators

FormaatBeschrijving
%YJaar
%MMaand
%DDag

Modifiers

Een optionele modifier volgt onmiddellijk het formaatindicatie:

ModifierBeschrijving
zZero-fill
sKorte tekstweergave
lLange tekstweergave
pSamengesteld nummer
dDecimaal (standaardformaat)

Voorbeelden

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"); // → "Woensdag, Maart 05"
MaskDecorator.forDate(d, "%Yl-%Mz-%Dz"); // → "2025-03-05"

Masking times

Gebruik forTime() om een LocalTime waarde te formatteren met een tijdmasker:

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

Gebruik parseTime() om een gemaskeerde tijdstring terug te parseren naar een LocalTime:

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

Een locale-gevoelige overload is beschikbaar bij het parseren van strings die gelokaliseerde AM/PM-waarden bevatten:

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

Time format indicators

FormaatBeschrijving
%HUur (24-uurs klok)
%hUur (12-uurs klok)
%mMinuten
%sSeconden
%pam/pm

Modifiers

Tijdmaskers gebruiken dezelfde modifiers als datummaskers. Zie Date modifiers.

Voorbeelden

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"

Masking date and time

Gebruik forDateTime() om een LocalDateTime waarde te formatteren met een gecombineerd datum- en tijdmasker:

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"

Format indicators

forDateTime() ondersteunt alle datum- en tijdformaatindicatoren in elke combinatie. Zie Date format indicators en Time format indicators voor de volledige lijst.

Modifiers

Alle modifiers die zijn beschreven in Date modifiers zijn van toepassing op zowel de datum- als tijds delen van een gecombineerd masker.

Voorbeelden

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"

Handling null results

waarschuwing

Alle for*() en parse*() methoden retourneren null als de invoer ongeldig is of niet kan worden geparsed. Verifieer altijd dat het resultaat niet null is voordat je het in je app-logica gebruikt.

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