Mam ciąg, który podzieliłem za pomocą kodu $CreateDT.Split(" ")
. Teraz chcę manipulować dwoma oddzielnymi ciągami na różne sposoby. Jak rozdzielić te dwie zmienne?
Mam ciąg, który podzieliłem za pomocą kodu $CreateDT.Split(" ")
. Teraz chcę manipulować dwoma oddzielnymi ciągami na różne sposoby. Jak rozdzielić te dwie zmienne?
Odpowiedzi:
Lubię to?
$string = 'FirstPart SecondPart'
$a,$b = $string.split(' ')
$a
$b
"FirstPart SecondPart ThirdPart"
i chcesz tylko dwa, możesz użyć$a,$b = $string.split(' ')[0,1]
Za pomocą -split
operatora tworzona jest tablica . Tak jak tak
$myString="Four score and seven years ago"
$arr = $myString -split ' '
$arr # Print output
Four
score
and
seven
years
ago
Kiedy potrzebujesz określonego elementu, użyj indeksu tablicy, aby go osiągnąć. Pamiętaj, że indeks zaczyna się od zera. Tak jak tak
$arr[2] # 3rd element
and
$arr[4] # 5th element
years
$arr = @($myString.split(' '))
$first_word = ("one-two-three" -split '-')[0]
.Split()
zawsze zwraca tablicę, więc nie ma potrzeby @(...)
: $arr = $myString.split(' ')
Pamiętaj jednak, że im więcej PowerShell-idiomatyczne rozwiązanie $arr = $myString -split ' '
jest już część odpowiedzi. Zwróć jednak uwagę, że -split
przyjmuje wyrażenie regularne i nie uwzględnia wielkości liter (użyj -csplit
do dzielenia z uwzględnieniem wielkości liter ).
Należy zwrócić uwagę na następującą różnicę między tymi dwiema technikami:
$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
Z tego widać, że string.split()
metoda :
Podczas gdy -split
operator :
-split
zajmuje regex (regular expression) jako (pierwszego) RHS argumentu, natomiast [string]
Type jest .Split()
metoda działa na dosłownym znak / tablicy znaków / i - w .NET Rdzenia - również literalna ciąg . Zwróć również uwagę, że prawidłowa składnia w PowerShell to $Str -split '<BR />'
; podczas składni pseudo sposób $Str -Split("<BR />")
dzieje się pracę w tym przypadku, należy unikać.
Spróbuj tego:
$Object = 'FirstPart SecondPart' | ConvertFrom-String -PropertyNames Val1, Val2
$Object.Val1
$Object.Val2
ConvertFrom-String
jest przestarzały i należy go unikać (zawsze miał charakter eksperymentalny, a fakt, że nie został uwzględniony w PowerShell Core, gdzie koncentrują się przyszłe wysiłki programistyczne, wskazuje, że nie ma go tutaj, aby zostać). Jeśli chodzi o potrzebę dodatkowej manipulacji: zadanie destrukturyzacji wystarczy:$val1, $val2 = 'FirstPart SecondPart' -split ' '
ConvertFrom-String
„s nieodłącznych problemów to wystarczający powód, aby tego uniknąć. Dotyczy to w szczególności do analizowania opartym na szablonie, ale nawet parsowanie ogranicznik oparte jest wadliwa ze względu na rodzaj wnioskowania , który jest niezmiennie stosowanej - patrz stackoverflow.com/a/50166580/45375 .