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

Lásd még