2012-05-16 29 views
5

整形された文字列をコンソールに出力したい。私は1つの文字列変数と1つの文字列配列変数を持っています。powershellにstring.formatを文字列配列で使用する方法

私はこれを行うとき:

test first + System.Object[] 

しかし、私はあることを出力する必要があります:

$arr = "aaa","bbb" 
"test {0} + {1}" -f "first",$arr 

を出力し、これがある

test first + aaa,bbb 

それとも似たような...

答えて

12

いくつかのオプション:

  1. あなたが(ちょうどクラス名を出力します)デフォルトToString()の実装に依存しないので、最初のアレイに参加:

    PS> 'test {0} + {1}' -f 'first',($arr -join ',') 
    test first + aaa,bbb 
    
  2. 使用文字列補間:

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

    $OFSの設定で使用される区切り文字を変更することができます。デフォルトは空白です。

    PS> $OFS = ',' 
    PS> "test $first + $arr" 
    test first + aaa,bbb 
    
  3. あなたは、これは、アレイは、あまりにも、最初に単一の文字列に変換するために強制的に

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

    で(約$OFSノートを含む)と同じ結果を得ることができます。

+0

+1答えの完全性のため –

+0

非常に良い!私は通常すぐに文字列補間を使用しますが、string.formatの-f演算子を見つけただけで、どこでも使用して混乱しました:)これは、-f演算子のバックグラウンド処理の違いは何ですか?文字列補間?たぶんいくつかの記事?ありがとう – jumbo

+2

'-f'は' String.Format() 'の簡単な利便性だけで、.NETと同じセマンティクスを使用しています。ストリング補間は、不変のカルチャ(明らかに)を使用してオブジェクトをストリングに変換するので、難題です。 '$ OFS'を使って配列を結合します。一般的に私は今正確な違いを正確に要約するのには自信を持っていません。何か楽しい: '$ a =(日付)、(日付)、(日付); Write-Host $ a; Write-Host "$ a" ' – Joey

関連する問題