Ich habe eine Zeichenfolge, die ich mithilfe des Codes aufgeteilt habe $CreateDT.Split(" ")
. Ich möchte jetzt zwei separate Zeichenfolgen auf unterschiedliche Weise bearbeiten. Wie kann ich diese in zwei Variablen trennen?
string
powershell
Davetherave
quelle
quelle
Antworten:
So was?
$string = 'FirstPart SecondPart' $a,$b = $string.split(' ') $a $b
quelle
"FirstPart SecondPart ThirdPart"
nur zwei haben und wollen, können Sie$a,$b = $string.split(' ')[0,1]
Mit dem
-split
Operator wird ein Array erstellt . Wie so,$myString="Four score and seven years ago" $arr = $myString -split ' ' $arr # Print output Four score and seven years ago
Wenn Sie ein bestimmtes Element benötigen, verwenden Sie den Array-Index, um es zu erreichen. Beachten Sie, dass der Index bei Null beginnt. Wie so,
$arr[2] # 3rd element and $arr[4] # 5th element years
quelle
$arr = @($myString.split(' '))
$first_word = ("one-two-three" -split '-')[0]
.Split()
immer ein Array zurück, daher ist Folgendes nicht erforderlich@(...)
:$arr = $myString.split(' ')
Beachten Sie jedoch, dass die PowerShell-idiomatischere Lösung$arr = $myString -split ' '
bereits Teil der Antwort ist. Beachten Sie jedoch, dass dies-split
eine Regex ist und die Groß- und Kleinschreibung nicht berücksichtigt wird (Verwendung-csplit
für die Aufteilung zwischen Groß- und Kleinschreibung).Es ist wichtig, den folgenden Unterschied zwischen den beiden Techniken zu beachten:
$Str="This is the<BR />source string<BR />ALL RIGHT" $Str.Split("<BR />") This is the (multiple blank lines) source string (multiple blank lines) ALL IGHT $Str -Split("<BR />") This is the source string ALL RIGHT
Daraus können Sie ersehen, dass die
string.split()
Methode :Während der
-split
Bediener :quelle
-split
ein dauert regex (regular expression) als (ersten) RHS - Operanden, während die[string]
der Typ -.Split()
Verfahren arbeitet auf einem Literal Zeichen / Zeichen - Array / und - in NET - Core - auch eine wörtliche Zeichenfolge . Beachten Sie außerdem, dass die richtige Syntax in PowerShell wie folgt lautet$Str -split '<BR />'
: während pseudo-Methode Syntax$Str -Split("<BR />")
zu geschieht Arbeit in diesem Fall ist es zu vermeiden.Versuche dies:
$Object = 'FirstPart SecondPart' | ConvertFrom-String -PropertyNames Val1, Val2 $Object.Val1 $Object.Val2
quelle
ConvertFrom-String
ist es veraltet und sollte vermieden werden (es hatte immer ein experimentelles Gefühl und die Tatsache, dass es nicht in PowerShell Core enthalten ist, wo zukünftige Entwicklungsbemühungen konzentriert sind, zeigt, dass es nicht hier bleibt). Was die Notwendigkeit zusätzlicher Manipulationen$val1, $val2 = 'FirstPart SecondPart' -split ' '
ConvertFrom-String
‚s inhärenten Probleme Grund genug sind , um es zu vermeiden. Dies gilt insbesondere für die Template-basierte Analyse, sondern auch die Trennzeichen-basierte Analyse fehlerhaft ist, aufgrund Typinferenz , die wird immer angewandt - siehe stackoverflow.com/a/50166580/45375 .Foreach-Objekt-Operationsanweisung:
$a,$b = 'hi.there' | foreach split . $a,$b hi there
quelle