about_Split
Rövid leírás
Ebből a cikkből megtudhatja, hogyan oszthat fel egy vagy több sztringet részsztringekre a Felosztás operátorral.
Hosszú leírás
A Felosztás operátor egy vagy több sztringet oszt fel részsztringekre. A felosztási művelet alábbi elemei módosíthatók:
- Határoló. Az alapértelmezett a szóköz, de megadhat karaktereket, sztringeket, mintákat vagy szkriptblokkokat, amelyek megadják a határolót. A PowerShell Split operátora egyszerű karakter helyett egy reguláris kifejezést használ a határolóban.
- Az alsztringek maximális száma. Az alapértelmezett érték az összes részsztring visszaadása. Ha az alsztringek számánál kisebb számot ad meg, a fennmaradó részszűrések összefűzve lesznek az utolsó részstringben.
- Azokat a beállításokat, amelyek meghatározzák azokat a feltételeket, amelyek között a határoló megfelel, például a SimpleMatch és a Többsoros.
Syntax
Az alábbi diagram a -split operátor szintaxisát mutatja be.
A paraméternevek nem jelennek meg a parancsban. Csak a paraméterértékeket adja meg. Az értékeknek a szintaxisdiagramban megadott sorrendben kell megjelennie.
-Split <String>
-Split (<String[]>)
<String> -Split <Delimiter>[,<Max-substrings>[,"<Options>"]]
<String> -Split {<ScriptBlock>} [,<Max-substrings>]
Bármely bináris felosztási utasításban (elválasztójelet vagy -cSplit
-split
szkriptblokkot tartalmazó split utasításban) helyettesítheti vagy helyettesítheti-iSplit
. A -iSplit
kis- és nagybetűk nem érzékenek a kis- és -split
nagybetűkhez. Az -cSplit
operátor megkülönbözteti a kis- és nagybetűket, ami azt jelenti, hogy az elválasztó szabályok alkalmazásakor a rendszer ezt a kis- és nagybetűket veszi figyelembe.
Paraméterek
<Sztring> vagy <sztring[]>
Egy vagy több felosztandó sztringet határoz meg. Ha több sztringet küld el, az összes sztring azonos elválasztó szabályokkal lesz felosztva.
Példa:
-split "red yellow blue green"
red
yellow
blue
green
<Elválasztókarakter>
Az alsztring végét azonosító karakterek. Az alapértelmezett elválasztó a szóköz, beleértve a szóközöket és a nem nyomtatható karaktereket, például az új vonalat ('n) és a tabulátort ('nem). Ha a sztringek fel vannak osztva, a rendszer kihagyja a határolójelet az összes részsztringből. Példa:
"Lastname:FirstName:Address" -split ":"
Lastname
FirstName
Address
Alapértelmezés szerint a határoló hiányzik az eredményekből. Ha meg szeretné őrizni a határoló egészét vagy egy részét, zárójelbe kell helyeznie azt a részt, amelyet meg szeretne őrizni.
Ha hozzáadja a <Max-substrings>
paramétert, ez elsőbbséget élvez, amikor a parancs felosztja a gyűjteményt. Ha úgy dönt, hogy elválasztójelet ad meg a kimenet részeként, a parancs a kimenet részeként adja vissza a határolót; A sztring felosztása azonban nem számít felosztásnak, ha a kimenet részeként adja vissza a határolót.
Példák:
"Lastname:FirstName:Address" -split "(:)"
Lastname
:
FirstName
:
Address
"Lastname/:/FirstName/:/Address" -split "/(:)/"
Lastname
:
FirstName
:
Address
<Max-substrings>
A felosztási művelet által visszaadott részsztringek maximális számát adja meg. Az alapértelmezett érték az elválasztó által felosztott összes részsztring. Ha további részszűrések is vannak, a rendszer összefűzi őket a végső részszűréssel. Ha kevesebb alsztring van, az összes részszűrést visszaadja a rendszer. A 0 érték az összes részsztringet adja vissza.
Példa:
$c = "Mercury,Venus,Earth,Mars,Jupiter,Saturn,Uranus,Neptune"
$c -split ",", 5
Mercury
Venus
Earth
Mars
Jupiter,Saturn,Uranus,Neptune
Ha egynél több sztringet (sztringtömböt) küld az -split
operátornak, a Max-substrings
korlát minden sztringre külön lesz alkalmazva.
$c = 'a,b,c','1,2,3,4,5'
$c -split ',', 3
a
b
c
1
2
3,4,5
<Max-substrings>
nem adja meg a visszaadott objektumok maximális számát. Az alábbi példában <Max-substrings>
3 értékre van állítva.
Ez három részszűrési értéket eredményez, de összesen öt sztringet az eredményül kapott kimenetben. A határolót a felosztások után a rendszer mindaddig tartalmazza, amíg el nem éri a legfeljebb három részszúrást. Az utolsó részszűrés további elválasztói a részszúrás részévé válnak.
'Chocolate-Vanilla-Strawberry-Blueberry' -split '(-)', 3
Chocolate
-
Vanilla
-
Strawberry-Blueberry
A negatív értékek a bemeneti sztring végétől kezdődően kért részsztringek mennyiségét adják vissza.
Feljegyzés
A negatív értékek támogatása a PowerShell 7-ben lett hozzáadva.
$c = "Mercury,Venus,Earth,Mars,Jupiter,Saturn,Uranus,Neptune"
$c -split ",", -5
Mercury,Venus,Earth,Mars
Jupiter
Saturn
Uranus
Neptune
<ScriptBlock>
A határoló alkalmazásának szabályait meghatározó kifejezés. A kifejezésnek $true vagy $false kell kiértékelnie. Csatolja a szkriptblokkot kapcsos zárójelekbe.
Példa:
$c = "Mercury,Venus,Earth,Mars,Jupiter,Saturn,Uranus,Neptune"
$c -split {$_ -eq "e" -or $_ -eq "p"}
M
rcury,V
nus,
arth,Mars,Ju
it
r,Saturn,Uranus,N
tun
<Beállítások>
A beállítás nevét idézőjelek közé kell foglalni. A beállítások csak akkor érvényesek, ha a <Max-substrings> paramétert használja az utasítás.
A Beállítások paraméter szintaxisa a következő:
"SimpleMatch [,IgnoreCase]"
"[RegexMatch] [,IgnoreCase] [,CultureInvariant]
[,IgnorePatternWhitespace] [,ExplicitCapture]
[,Singleline | ,Multiline]"
A SimpleMatch beállításai a következők:
- SimpleMatch: Használjon egyszerű sztring-összehasonlítást a határoló kiértékelésekor. A RegexMatch nem használható.
- IgnoreCase: A kis- és nagybetűk nem érzéketlen egyeztetését kényszeríti, még akkor is, ha a -cSplit operátor van megadva.
A RegexMatch beállításai a következők:
- RegexMatch: A határoló kiértékeléséhez használjon reguláris kifejezésmegfeleltetéseket. Ez az alapértelmezett viselkedés. A SimpleMatch nem használható.
- IgnoreCase: A kis- és nagybetűk nem érzéketlen egyeztetését kényszeríti, még akkor is, ha a -cSplit operátor van megadva.
- CultureInvariant: Figyelmen kívül hagyja a nyelvi különbségeket a határoló kiértékelésekor. Csak a RegexMatch használatával érvényes.
- IgnorePatternWhitespace: Figyelmen kívül hagyja a nem kijelölt szóközt és a számjellel (#) megjelölt megjegyzéseket. Csak a RegexMatch használatával érvényes.
- Többsoros: A többsoros mód a bemeneti sztring eleje és
$
vége helyett minden sor elejét és végét kényszeríti^
. - Egysoros: Az egysoros mód a bemeneti sztringet egysorosként kezeli.
Kényszeríti a
.
karaktert, hogy megfeleljen minden karakternek (beleértve az új vonalakat is), ahelyett, hogy minden karaktert egyeztet, KIVÉVE az új vonalat\n
. - ExplicitCapture: Figyelmen kívül hagyja a nem elnevezett egyezési csoportokat, így csak explicit rögzítési csoportok jelennek meg az eredménylistában. Csak a RegexMatch használatával érvényes.
UNARY ÉS BINÁRIS FELOSZTÁSI OPERÁTOROK
A nem osztott operátor (-split <string>
) nagyobb elsőbbséget élvez, mint a vessző. Ennek eredményeképpen, ha vesszővel tagolt sztringlistát küld a nem osztott operátornak, csak az első sztring (az első vessző előtt) lesz felosztva.
Az alábbi minták egyikével több sztringet oszthat fel:
- A bináris felosztás operátor használata (<sztring[]> -split <elválasztó>)
- Az összes sztringet zárójelek közé kell fűzni
- Tárolja a sztringeket egy változóban, majd küldje el a változót az osztott operátornak
Vegyük a következő példát:
PS> -split "1 2", "a b"
1
2
a b
PS> "1 2", "a b" -split " "
1
2
a
b
PS> -split ("1 2", "a b")
1
2
a
b
PS> $a = "1 2", "a b"
PS> -split $a
1
2
a
b
Példák
Az alábbi utasítás a sztringet a szóköznél osztja fel.
-split "Windows PowerShell 2.0`nWindows PowerShell with remoting"
Windows
PowerShell
2.0
Windows
PowerShell
with
remoting
Az alábbi utasítás bármilyen vesszőre felosztja a sztringet.
"Mercury,Venus,Earth,Mars,Jupiter,Saturn,Uranus,Neptune" -split ','
Mercury
Venus
Earth
Mars
Jupiter
Saturn
Uranus
Neptune
Az alábbi utasítás felosztja a sztringet az "er" mintára.
"Mercury,Venus,Earth,Mars,Jupiter,Saturn,Uranus,Neptune" -split 'er'
M
cury,Venus,Earth,Mars,Jupit
,Saturn,Uranus,Neptune
Az alábbi utasítás kis- és nagybetűket megkülönböztető felosztást hajt végre az "N" betűnél.
"Mercury,Venus,Earth,Mars,Jupiter,Saturn,Uranus,Neptune" -cSplit 'N'
Mercury,Venus,Earth,Mars,Jupiter,Saturn,Uranus,
eptune
Az alábbi utasítás a sztringet "e" és "t" értékre osztja.
"Mercury,Venus,Earth,Mars,Jupiter,Saturn,Uranus,Neptune" -split '[et]'
M
rcury,V
nus,
ar
h,Mars,Jupi
r,Sa
urn,Uranus,N
p
un
Az alábbi utasítás az "e" és az "r" értékre osztja a sztringet, de az eredményül kapott részsztringeket hat részsztringre korlátozza.
"Mercury,Venus,Earth,Mars,Jupiter,Saturn,Uranus,Neptune" -split '[er]', 6
M
cu
y,V
nus,
arth,Mars,Jupiter,Saturn,Uranus,Neptune
Az alábbi utasítás egy sztringet három részsztringre osztja fel.
"a,b,c,d,e,f,g,h" -split ",", 3
a
b
c,d,e,f,g,h
Az alábbi utasítás három részsztringre osztja a sztringet a sztring végétől kezdve.
"a,b,c,d,e,f,g,h" -split ",", -3
a,b,c,d,e,f
g
h
Az alábbi utasítás két sztringet három részsztringre oszt. (A korlátot minden sztringre egymástól függetlenül alkalmazza a rendszer.)
"a,b,c,d", "e,f,g,h" -split ",", 3
a
b
c,d
e
f
g,h
Az alábbi utasítás az itt szereplő sztring minden sorát felosztja az első számjegyre. A Többsoros beállítással felismeri az egyes sorok és sztringek elejét.
A 0 a Max-substrings paraméter "az összes visszaadása" értékét jelöli. A beállításokat, például a Többsorost csak akkor használhatja, ha meg van adva a Max-substrings érték.
$a = @'
1The first line.
2The second line.
3The third of three lines.
'@
$a -split "^\d", 0, "multiline"
The first line.
The second line.
The third of three lines.
Az alábbi utasítás a fordított perjel karaktert használja a pontelválasztó (.) elválasztó elől való meneküléshez.
Az alapértelmezett RegexMatch esetében az idézőjelek (".") közé foglalt pont úgy van értelmezve, hogy az egy újsoros karakter kivételével bármely karakternek megfeleljen. Ennek eredményeképpen a Felosztás utasítás az új vonal kivételével minden karakterhez egy üres sort ad vissza.
"This.is.a.test" -split "\."
This
is
a
test
Az alábbi utasítás a SimpleMatch beállítással utasítja a -split operátort a pontelválasztó (.) szó szerinti értelmezésére.
A 0 a Max-substrings paraméter "az összes visszaadása" értékét jelöli. Az olyan beállításokat, mint a SimpleMatch, csak akkor használhatja, ha a Max-substrings érték meg van adva.
"This.is.a.test" -split ".", 0, "simplematch"
This
is
a
test
Az alábbi utasítás a sztringet két elválasztójel egyikére osztja fel egy változó értékétől függően.
$i = 1
$c = "LastName, FirstName; Address, City, State, Zip"
$c -split $(if ($i -lt 1) {","} else {";"})
LastName, FirstName
Address, City, State, Zip