it-swarm.com.de

powershell -split ('') gibt eine neue Zeile an

Get-Content $user| Foreach-Object{
   $user = $_.Split('=')
   New-Variable -Name $user[0] -Value $user[1]}

Ich versuche an einem Skript zu arbeiten und es eine Textdatei in ein Array aufteilen zu lassen, wobei die Datei nach jeder neuen Zeile aufgeteilt wird

Wo muss ich das "=" - Zeichen ändern?

14
colbyt

Es hängt von der genauen Kodierung der Textdatei ab, [Environment]::NewLine führt jedoch normalerweise den Trick aus.

"This is `r`na string.".Split([Environment]::NewLine)

Ausgabe:

Das ist

ein Faden.

26
Ryan Ries

Sie können die String.Split - Methode verwenden, um CRLF aufzuteilen, ohne mit der Überladung Split (String [], StringSplitOptions) die leeren Elemente zu erhalten.

Es gibt verschiedene Möglichkeiten, wie Sie diese Methode verwenden können.

Option 1

$input.Split([string[]]"`r`n", [StringSplitOptions]::None)

Dies wird in der kombinierten Zeichenfolge CRLF (Wagenrücklauf und Zeilenvorschub) aufgeteilt, die durch `r`n Dargestellt wird. Mit der Option [StringSplitOptions]::None Kann die Methode Split leere Elemente im Array zurückgeben. Es sollte jedoch keine geben, wenn alle Zeilen mit einem CRLF enden.

Option 2

$input.Split([Environment]::NewLine, [StringSplitOptions]::RemoveEmptyEntries)

Dies wird bei entweder einem Wagenrücklauf oder einem Zeilenvorschub aufgeteilt. Das Array wird also mit leeren Elementen enden, die mit den tatsächlichen Zeichenfolgen durchsetzt sind. Die Option [StringSplitOptions]::RemoveEmptyEntries Weist die Methode Split an, keine leeren Elemente einzuschließen.

4
aphoria

Das Problem der String.Split-Methode besteht darin, dass sie sich in der Zeichenfolge each aufteilt. Wenn die Textdatei CRLF-Zeilentrennzeichen enthält, erhalten Sie leere Elemente.

Bessere Lösung mit dem Operator -Split .

"This is `r`na string." -Split "`r`n" #[Environment]::NewLine, if you prefer
3
LCC