既存のスクリプトを変更して、ユーザー名が firstname の先頭にドットが付いた姓になるようにします。たとえば、John Doe のユーザー名は j.doe になります。現在のスクリプトは (. なしで) 次のように動作します: $firstname.substring(0,$i) + $lastname
ありがとう。
答え1
その文字列を構築する方法はいくつかあります。[ニヤリ] ここに私が思い浮かべた 4 つを挙げます。
コードが何をするのか...
- FirstName、LastName データを含む CSV ファイルの読み取りを偽装し、ブロック
全体を#region/#endregion
希望するデータ ソースに置き換えます。 - 結果のコレクションを反復処理する
- 4 つの異なる方法で目的の文字列を構築します。
私は-f
文字列フォーマット演算子を好みますが、多くの人は文字列の連結を好みます。 - それぞれをディスプレイに送信する
- 結果のグループ間に区切り線を追加します
コード ...
#region >>> fake reading in a CSV file
# when ready to do this for real, use your prefered data source
# and delete or comment out the entire "#region/#endregion" block
$NameList = @'
FirstName, LastName
Alfa, Bravo
Charlie, Delta
Echo, Foxtrot
'@ -split [System.Environment]::NewLine |
ConvertFrom-Csv
#endregion >>> fake reading in a CSV file
foreach ($NL_Item in $NameList)
{
# string format operator
'{0}.{1}' -f $NL_Item.FirstName[0], $NL_Item.LastName
# -join operator
$NL_Item.FirstName[0], $NL_Item.LastName -join '.'
# string concatenation
$NL_Item.FirstName[0] + '.' + $NL_Item.LastName
# variable-in-string expansion
"$($NL_Item.FirstName[0]).$($NL_Item.LastName)"
# yes, you can multiply a string [*grin*]
'=' * 20
}
出力...
A.Bravo
A.Bravo
A.Bravo
A.Bravo
====================
C.Delta
C.Delta
C.Delta
C.Delta
====================
E.Foxtrot
E.Foxtrot
E.Foxtrot
E.Foxtrot
====================
答え2
$firstname.substring(0,$i) +"."+ $lastname