2012-05-16 10 views

Odpowiedz

12

Kilka opcji:

  1. Dołącz tablicę pierwszy, więc nie polegać na realizacji domyślny ToString() (który po prostu drukuje nazwę klasy):

    PS> 'test {0} + {1}' -f 'first',($arr -join ',') 
    test first + aaa,bbb 
    
  2. Użyj interpolacji wyrażenie:

    PS> $first = 'first' 
    PS> "test $first + $arr" 
    test first + aaa bbb 
    

    Można zmienić ogranicznik używany przez ustawienie $OFS, domyślnie jest to spacja:

    PS> $OFS = ',' 
    PS> "test $first + $arr" 
    test first + aaa,bbb 
    
  3. Można uzyskać ten sam rezultat (w tym noty o $OFS) z

    PS> 'test {0} + {1}' -f 'first',(''+$arr) 
    test first + aaa bbb 
    

    Zmusza tablicę być przekształcony w jeden ciąg pierwsze, zbyt.

+0

+1 Za kompletność odpowiedzi –

+0

Bardzo ładne! Normalnie użyłbym interpolacji ciągów, ale właśnie odkryłem operatora -f dla string.format i polubiłem go tak bardzo, że użyłem go wszędzie i wpadłem w zakłopotanie :) To rodzi kolejne pytanie jaka jest różnica w przetwarzaniu tła operatora -f i interpolacja ciągów znaków? Może jakieś artykuły? Dzięki – jumbo

+2

'-f' jest prostym udogodnieniem dla' String.Format() ', używa tej samej semantyki co .NET w tym względzie. Interpolacja łańcuchów jest trudnym tematem, ponieważ przekształca obiekty na ciąg przy użyciu niezmiennej kultury (podobno); dołączy także tablice używając '$ OFS'. Generalnie nie czuję się pewnie teraz, aby dokładnie podsumować dokładne różnice. Coś fajnego: 'a = (data), (data), (data); Write-Host $ a; Write-Host "$ a" ' – Joey

Powiązane problemy