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?
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?
Antworten:
So was?
$string = 'FirstPart SecondPart'
$a,$b = $string.split(' ')
$a
$b
"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
$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 :
-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
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 .