Get-Content $user| Foreach-Object{
$user = $_.Split('=')
New-Variable -Name $user[0] -Value $user[1]}
スクリプトで作業して、テキストファイルを配列に分割し、新しい行ごとにファイルを分割しようとしている
「=」記号を何に変更すればよいですか
テキストファイルの正確なエンコーディングに依存しますが、[Environment]::NewLine
通常、トリックを行います。
"This is `r`na string.".Split([Environment]::NewLine)
出力:
これは
文字列。
String.Split
メソッドの問題は、指定された文字列のeach文字で分割されることです。したがって、テキストファイルにCRLF行区切り文字がある場合、空の要素が取得されます。
-Split
演算子 を使用したより良いソリューション。
"This is `r`na string." -Split "`r`n" #[Environment]::NewLine, if you prefer
Split(String []、StringSplitOptions) メソッドオーバーロードを使用して、String.Split
メソッドを使用してCRLF
で分割し、空の要素で終わることはありません。 。
この方法を使用して実行するには、いくつかの方法があります。
$input.Split([string[]]"`r`n", [StringSplitOptions]::None)
これは、`r`n
で表されるCRLF
(キャリッジリターンとラインフィード)の結合文字列で分割されます。 [StringSplitOptions]::None
オプションを使用すると、Split
メソッドは配列内の空の要素を返すことができますが、すべての行がCRLF
で終わっている場合は存在しないはずです。
$input.Split([Environment]::NewLine, [StringSplitOptions]::RemoveEmptyEntries)
これは、eitherキャリッジリターンまたはラインフィードに分割されます。そのため、配列は実際の文字列が散在した空の要素になります。 [StringSplitOptions]::RemoveEmptyEntries
オプションは、空の要素を含めないようにSplit
メソッドに指示します。