Łączenie ciągów znaków (stringów) i zmiennych to funkcja bez której nie sposób się obejść, niezależnie od użytego języka. PowerShell nie jest wyjątkiem i choć sposobów łączenia jest wiele oto najpopularniejsze z nich.
Sposób pierwszy: cudzysłowy
Pierwszym sposobem jest ujęcie ciągu w cudzysłowy "
i umieszczenie zmiennych bezpośrednio w nim. Ten sposób jest idealny gdy w stringu trzeba umieścić wartości zmiennych bez dodatkowego formatowania.
$kolor = 'czerwony'
$przedmiot = 'stoliczek'
Write-Host "Entliczek pentliczek $kolor $przedmiot."
Można także wstawić własności zmiennych lub przetworzyć je w inny sposób wykorzystując $()
i tworząc podwyrażenie. W przykładzie oprócz wartości zmiennej użyta będzie jej długość.
$kolor = 'czerwony'
$przedmiot = 'stoliczek'
Write-Host "Entliczek pentliczek $kolor ($($kolor.Length)) $przedmiot ($($przedmiot.Length))."
Sposób drugi: String.Format z .NET czyli -f
Drugim sposobem jest wykorzystanie metody String.Format znanej z .NET. Wpierw w stringu umieszcza się symbole {0}
, {1}
itd a następnie korzysta z korzysta z -f
i przekazuje zmienne które będą podstawione zamiast wstawionych wcześniej symboli. Sposób ten jest idealny gdy poszczególne zmienne wyświetlane są wielokrotnie lub gdy potrzebne jest dodatkowe ich formatowanie.
$kolor = 'czerwony'
$przedmiot = 'stoliczek'
$tekst = 'Entliczek pentliczek {0} {1}.' -f $kolor, $przedmiot
Write-Host $tekst
Wstawianie własności zmiennych sprowadza się do przekazania wartości po -f
, a ponadto można dowolnie formatować ich wyświetlanie na przykład by długość zmiennej była wypisana w dwóch cyfrach.
$kolor = 'czerwony'
$przedmiot = 'stoliczek'
$tekst = 'Entliczek pentliczek {0} ({1:00}) {2} ({3:00}).' -f $kolor, $kolor.Length, $przedmiot, $przedmiot.Length
Write-Host $tekst
Sposób trzeci: wykorzystanie +
Nie bez powodu sposób ten został umieszczony na samym końcu. Choć umieszczenie zmiennych w ten sposób jest relatywnie łatwe, albowiem sprowadza się do oddzielania zmiennych i ciągów znakiem +
, to finalny kod jest mocno nieczytelny. Niemniej jednak wypada wspomnieć o tej możliwości.
$kolor = 'czerwony'
$przedmiot = 'stoliczek'
$tekst = 'Entliczek pentliczek ' + $kolor + ' ' + $przedmiot + '.'
Write-Host $tekst
Podobnie można przetwarzać zmienne lub korzystać z ich własności. Niestety przejrzystość kodu zaczyna spadać bardzo szybko.
$kolor = 'czerwony'
$przedmiot = 'stoliczek'
$tekst = 'Entliczek pentliczek ' + $kolor + ' (' + $kolor.Length + ') ' + $przedmiot + ' (' + $przedmiot.Length + ')' + '.'
Write-Host $tekst
Skomentuj