Partager via


about_Split

Description courte

Explique comment utiliser l’opérateur Split pour fractionner une ou plusieurs chaînes en sous-chaînes.

Description longue

L’opérateur Split fractionne une ou plusieurs chaînes en sous-chaînes. Vous pouvez modifier les éléments suivants de l’opération Fractionner :

  • Délimiteur. La valeur par défaut est l’espace blanc, mais vous pouvez spécifier des caractères, des chaînes, des modèles ou des blocs de script qui spécifient le délimiteur. L’opérateur Split dans PowerShell utilise une expression régulière dans le délimiteur plutôt qu’un caractère simple.
  • Nombre maximal de sous-chaînes. La valeur par défaut consiste à retourner toutes les sous-chaînes. Si vous spécifiez un nombre inférieur au nombre de sous-chaînes, les sous-chaînes restantes sont concaténées dans la dernière sous-chaîne.
  • Options qui spécifient les conditions dans lesquelles le délimiteur est mis en correspondance, telles que SimpleMatch et Multiline.

Syntax

Le diagramme suivant montre la syntaxe de l’opérateur -split.

Les noms de paramètres n’apparaissent pas dans la commande. Incluez uniquement les valeurs de paramètre. Les valeurs doivent apparaître dans l’ordre spécifié dans le diagramme de syntaxe.

-Split <String>
-Split (<String[]>)
<String> -Split <Delimiter>[,<Max-substrings>[,"<Options>"]]
<String> -Split {<ScriptBlock>} [,<Max-substrings>]

Vous pouvez remplacer -iSplit ou -cSplit pour -split dans n’importe quelle instruction Split binaire (instruction Split qui inclut un délimiteur ou un bloc de script). Les -iSplit opérateurs et -split ne respectent pas la casse. L’opérateur -cSplit respecte la casse, ce qui signifie que cette casse est prise en compte lorsque les règles de délimiteur sont appliquées.

Paramètres

<String> ou <String[]>

Spécifie une ou plusieurs chaînes à fractionner. Si vous envoyez plusieurs chaînes, toutes les chaînes sont fractionnées à l’aide des mêmes règles de délimiteur.

Exemple :

-split "red yellow blue green"
red
yellow
blue
green

<Délimiteur>

Caractères qui identifient la fin d’une sous-chaîne. Le délimiteur par défaut est les espaces blancs, y compris les espaces et les caractères non imprimables, tels que newline ('n) et tabulation ('t). Lorsque les chaînes sont fractionnées, le délimiteur est omis de toutes les sous-chaînes. Exemple :

"Lastname:FirstName:Address" -split ":"
Lastname
FirstName
Address

Par défaut, le délimiteur est omis des résultats. Pour conserver tout ou partie du délimiteur, placez entre parenthèses la partie que vous souhaitez conserver. Si le <Max-substrings> paramètre est ajouté, cela est prioritaire lorsque votre commande fractionne la collection. Si vous choisissez d’inclure un délimiteur dans la sortie, la commande retourne le délimiteur dans le cadre de la sortie ; toutefois, le fractionnement de la chaîne pour retourner le délimiteur dans le cadre de la sortie ne compte pas comme fractionnement.

Exemples :

"Lastname:FirstName:Address" -split "(:)"
Lastname
:
FirstName
:
Address

"Lastname/:/FirstName/:/Address" -split "/(:)/"
Lastname
:
FirstName
:
Address

<Max-substrings>

Spécifie le nombre maximal de sous-chaînes retournées par l’opération de fractionnement. La valeur par défaut est toutes les sous-chaînes divisées par le délimiteur. S’il existe d’autres sous-chaînes, elles sont concaténées vers la sous-chaîne finale. S’il y a moins de sous-chaînes, toutes les sous-chaînes sont retournées. La valeur 0 retourne toutes les sous-chaînes.

Exemple :

$c = "Mercury,Venus,Earth,Mars,Jupiter,Saturn,Uranus,Neptune"
$c -split ",", 5
Mercury
Venus
Earth
Mars
Jupiter,Saturn,Uranus,Neptune

Si vous envoyez plusieurs chaînes (tableau de chaînes) à l’opérateur -split , la Max-substrings limite est appliquée à chaque chaîne séparément.

$c = 'a,b,c','1,2,3,4,5'
$c -split ',', 3

a
b
c
1
2
3,4,5

<Max-substrings> ne spécifie pas le nombre maximal d’objets retournés. Dans l’exemple suivant, <Max-substrings> est défini sur 3. Il en résulte trois valeurs de sous-chaîne, mais un total de cinq chaînes dans la sortie résultante. Le délimiteur est inclus après les fractionnements jusqu’à ce que le maximum de trois sous-chaînes soit atteint. Des délimiteurs supplémentaires dans la sous-chaîne finale font partie de la sous-chaîne.

'Chocolate-Vanilla-Strawberry-Blueberry' -split '(-)', 3
Chocolate
-
Vanilla
-
Strawberry-Blueberry

Les valeurs négatives retournent la quantité de sous-chaînes demandées à partir de la fin de la chaîne d’entrée.

Notes

La prise en charge des valeurs négatives a été ajoutée dans PowerShell 7.

$c = "Mercury,Venus,Earth,Mars,Jupiter,Saturn,Uranus,Neptune"
$c -split ",", -5
Mercury,Venus,Earth,Mars
Jupiter
Saturn
Uranus
Neptune

<ScriptBlock>

Expression qui spécifie les règles d’application du délimiteur. L’expression doit être évaluée à $true ou $false. Enfermez le bloc de script dans des accolades.

Exemple :

$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

<Options>

Placez le nom de l’option entre guillemets. Les options sont valides uniquement lorsque le <paramètre Max-substrings> est utilisé dans l’instruction.

La syntaxe du paramètre Options est la suivante :

"SimpleMatch [,IgnoreCase]"

"[RegexMatch] [,IgnoreCase] [,CultureInvariant]
[,IgnorePatternWhitespace] [,ExplicitCapture]
[,Singleline | ,Multiline]"

Les options SimpleMatch sont les suivantes :

  • SimpleMatch : utilisez la comparaison de chaînes simple lors de l’évaluation du délimiteur. Ne peut pas être utilisé avec RegexMatch.
  • IgnoreCase : force la correspondance sans respect de la casse, même si l’opérateur -cSplit est spécifié.

Les options RegexMatch sont les suivantes :

  • RegexMatch : utilisez la correspondance d’expression régulière pour évaluer le délimiteur. Il s'agit du comportement par défaut. Impossible d’utiliser SimpleMatch.
  • IgnoreCase : force la correspondance sans respect de la casse, même si l’opérateur -cSplit est spécifié.
  • CultureInvariant : ignore les différences culturelles dans la langue lors de l’évaluation du délimiteur. Valide uniquement avec RegexMatch.
  • IgnorePatternWhitespace : ignore les espaces blancs non échiffés et les commentaires marqués avec le signe numérique (#). Valide uniquement avec RegexMatch.
  • Multiligne : le mode multiligne force ^ et $ à faire correspondre l’extrémité de début de chaque ligne au lieu du début et de la fin de la chaîne d’entrée.
  • Singleline : le mode Singleline traite la chaîne d’entrée comme une ligne unique. Il force le . caractère à correspondre à chaque caractère (y compris les nouvelles lignes), au lieu de correspondre à chaque caractère, SAUF la nouvelle ligne \n.
  • ExplicitCapture : ignore les groupes de correspondances non nommés afin que seuls les groupes de capture explicites soient retournés dans la liste des résultats. Valide uniquement avec RegexMatch.

OPÉRATEURS UNARY et BINARY SPLIT

L’opérateur de fractionnement unaire (-split <string>) a une priorité plus élevée qu’une virgule. Par conséquent, si vous envoyez une liste de chaînes séparées par des virgules à l’opérateur de fractionnement unaire, seule la première chaîne (avant la première virgule) est fractionnée.

Utilisez l’un des modèles suivants pour fractionner plusieurs chaînes :

  • Utiliser l’opérateur de fractionnement binaire (<string[]> -split <delimiter>)
  • Placer toutes les chaînes entre parenthèses
  • Stocker les chaînes dans une variable, puis soumettre la variable à l’opérateur fractionné

Prenons l’exemple suivant :

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

Exemples

L’instruction suivante fractionne la chaîne au niveau de l’espace blanc.

-split "Windows PowerShell 2.0`nWindows PowerShell with remoting"

Windows
PowerShell
2.0
Windows
PowerShell
with
remoting

L’instruction suivante fractionne la chaîne à n’importe quelle virgule.

"Mercury,Venus,Earth,Mars,Jupiter,Saturn,Uranus,Neptune" -split ','
Mercury
Venus
Earth
Mars
Jupiter
Saturn
Uranus
Neptune

L’instruction suivante fractionne la chaîne au modèle « er ».

"Mercury,Venus,Earth,Mars,Jupiter,Saturn,Uranus,Neptune" -split 'er'
M
cury,Venus,Earth,Mars,Jupit
,Saturn,Uranus,Neptune

L’instruction suivante effectue un fractionnement respectant la casse à la lettre « N ».

"Mercury,Venus,Earth,Mars,Jupiter,Saturn,Uranus,Neptune" -cSplit 'N'
Mercury,Venus,Earth,Mars,Jupiter,Saturn,Uranus,
eptune

L’instruction suivante fractionne la chaîne entre « e » et « t ».

"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

L’instruction suivante divise la chaîne à « e » et « r », mais limite les sous-chaînes résultantes à six sous-chaînes.

"Mercury,Venus,Earth,Mars,Jupiter,Saturn,Uranus,Neptune" -split '[er]', 6
M

cu
y,V
nus,
arth,Mars,Jupiter,Saturn,Uranus,Neptune

L’instruction suivante divise une chaîne en trois sous-chaînes.

"a,b,c,d,e,f,g,h" -split ",", 3
a
b
c,d,e,f,g,h

L’instruction suivante divise une chaîne en trois sous-chaînes à partir de la fin de la chaîne.

"a,b,c,d,e,f,g,h" -split ",", -3
a,b,c,d,e,f
g
h

L’instruction suivante divise deux chaînes en trois sous-chaînes. (La limite est appliquée à chaque chaîne indépendamment.)

"a,b,c,d", "e,f,g,h" -split ",", 3
a
b
c,d
e
f
g,h

L’instruction suivante fractionne chaque ligne de la chaîne here au premier chiffre. Il utilise l’option Multiligne pour reconnaître le début de chaque ligne et chaîne.

0 représente la valeur « return all » du paramètre Max-substrings. Vous pouvez utiliser des options, telles que Multiligne, uniquement lorsque la valeur Max-substrings est spécifiée.

$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.

L’instruction suivante utilise le caractère barre oblique inverse pour échapper au délimiteur point (.).

Avec la valeur par défaut RegexMatch, le point placé entre guillemets (« . ») est interprété comme correspondant à n’importe quel caractère, à l’exception d’un caractère de nouvelle ligne. Par conséquent, l’instruction Split retourne une ligne vide pour chaque caractère à l’exception de la ligne nouvelle.

"This.is.a.test" -split "\."
This
is
a
test

L’instruction suivante utilise l’option SimpleMatch pour diriger l’opérateur -split pour interpréter le délimiteur point (.) littéralement.

0 représente la valeur « return all » du paramètre Max-substrings. Vous pouvez utiliser des options, telles que SimpleMatch, uniquement lorsque la valeur Max-substrings est spécifiée.

"This.is.a.test" -split ".", 0, "simplematch"
This
is
a
test

L’instruction suivante divise la chaîne à l’un des deux délimiteurs, en fonction de la valeur d’une variable.

$i = 1
$c = "LastName, FirstName; Address, City, State, Zip"
$c -split $(if ($i -lt 1) {","} else {";"})
LastName, FirstName
 Address, City, State, Zip

Voir aussi