Expand-PlaceholderString #
ÜBERSICHT #
Ersetzt Platzhalter-Tokens in einem Template-String durch Variablenwerte, mit Unterstützung für Bedingungen, Formatierung und System-Variablen.
SYNTAX #
Expand-PlaceholderString [-Template] <string> [[-Variables] <hashtable>] [[-Delimiter] <char>]
[-SkipUnknown] [[-Culture] <System.Globalization.CultureInfo>] [<CommonParameters>]
BESCHREIBUNG #
Portierung der Delphi-Engine ReplaceVars (elString.pas) und TCnFormatNamedStrings.Get nach PowerShell. Zeichenweise Verarbeitung mit Stack-basierten verschachtelten Bedingungen.
Tokens werden durch Delimiter-Zeichen begrenzt (Standard: %). Unterstützt:
- Einfache Variablenersetzung: %Name%
- System-Variablen: %SYSTEM.USERNAME%, %SYSTEM.TODAY%, %YYYY% etc.
- Bedingte Blöcke: %?Variable%…%?|%…%?%
- Vergleichsoperatoren: %?Var=Wert%, %?Var^Prefix%, %?Var$Suffix%, %?Var*Enthält%, %?Var#Liste%
- Format-Optionen: %FDdd.mm.yyyy:Datum%, %FF#,##0.00:Preis%, %L20:Name%
- Escaped Delimiter: %% ergibt ein einzelnes %
- Rekursive Expansion: %!Ref% löst den Wert von Ref nochmals auf
PARAMETER #
-Template #
Type: string
Der Template-String mit Platzhaltern.
-Variables #
Type: hashtable
Default: @{}
Hashtable mit Variablennamen und ihren Werten.
-Delimiter #
Type: char
Default: '%'
Das Begrenzungszeichen für Platzhalter. Standard: ‘%’.
-SkipUnknown #
Type: switch
Wenn gesetzt, bleiben unbekannte Platzhalter als %name% im Ergebnis erhalten. Ohne diesen Switch werden unbekannte Platzhalter durch Leerstring ersetzt.
-Culture #
Type: System.Globalization.CultureInfo
Default: $null
Die Kultur für Datums- und Zahlenformatierung. Standard: de-DE.
AUSGABEN #
string
BEISPIELE #
Expand-PlaceholderString -Template 'Hallo %Name%!' -Variables @{Name='Welt'}
# Gibt 'Hallo Welt!' zurück
$vars = @{KopfNummer='20212869'; Datum=[datetime]'2026-02-16'}
Expand-PlaceholderString -Template 'Rechnung %KopfNummer% vom %FDdd.mm.yyyy:Datum%' -Variables $vars
# Gibt 'Rechnung 20212869 vom 16.02.2026' zurück
Expand-PlaceholderString -Template '%?HasDiscount%Rabatt: %Discount%%?|%Kein Rabatt%?%' -Variables @{HasDiscount='1'; Discount='10%'}
# Gibt 'Rabatt: 10%' zurück