about_Split
Mis à jour: mai 2014
S'applique à: Windows PowerShell 2.0, Windows PowerShell 3.0, Windows PowerShell 4.0, Windows PowerShell 5.0
RUBRIQUE
about_Split
DESCRIPTION COURTE
Explique comment utiliser l’opérateur Split pour fractionner une ou plusieurs chaînes en sous-chaînes.
DESCRIPTION DÉTAILLÉE
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 de fractionnement :
-- Délimiteur. La valeur par défaut est un 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 de Windows PowerShell® utilise une expression régulière dans le délimiteur, au lieu d’un caractère simple.
-- Nombre maximal de sous-chaînes. Le comportement par défaut est de 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 identifié, comme SimpleMatch et Multiline.
SYNTAXE
Le diagramme suivant montre la syntaxe de l’opérateur -split.
Les noms des paramètres n’apparaissent pas dans la commande. Incluez seulement les valeurs des paramètres. Les valeurs doivent apparaître dans l’ordre spécifié dans le diagramme de la syntaxe.
-Split <String>
<String> -Split <Delimiter>[,<Max-substrings>[,"<Options>"]]
<String> -Split {<ScriptBlock>} [,<Max-substrings>]
Vous pouvez remplacer -split par -iSplit ou par -cSplit dans n’importe quelle instruction Split binaire (une instruction Split qui comprend un délimiteur ou un bloc de script). Les opérateurs -iSplit et -split respectent la casse. L’opérateur -cSplit respecte la casse, ce qui signifie que la casse est prise en compte quand les règles de délimiteur sont appliquées.
PARAMÈTRES
<Chaîne>
Spécifie une ou plusieurs chaînes à fractionner. Si vous soumettez plusieurs chaînes, toutes les chaînes sont fractionnées selon les mêmes règles de délimiteur. Exemple :-split "red yellow blue green" red yellow blue green
<Délimiteur>
Les caractères qui identifient la fin d’une sous-chaîne. Le délimiteur par défaut est un espace blanc, ce qui comprend les espaces et les caractères non imprimables, comme le saut de ligne (`n) et la tabulation (`t). Quand les chaînes sont fractionnées, le délimiteur est omis dans toutes les sous-chaînes. Exemple :"Lastname:FirstName:Address" -split ":" Lastname FirstName Address
Par défaut, le délimiteur est omis dans les résultats. Pour conserver tout ou partie du délimiteur, placez entre des parenthèses la partie que vous voulez conserver. Si le paramètre <Nombre maximal de sous-chaînes> est ajouté, il est prioritaire quand votre commande fractionne la collection. Si vous choisissez d’inclure un délimiteur dans la sortie, la commande retourne le délimiteur dans la sortie. Cependant, le fait de fractionner la chaîne pour retourner le délimiteur dans la sortie ne compte comme un fractionnement. .Exemples :
"Lastname:FirstName:Address" -split "(:)" Lastname : FirstName : Address "Lastname/:/FirstName/:/Address" -split "/(:)/" Lastname : FirstName : Address
Dans l’exemple suivant, <Nombre maximal de sous-chaînes> est défini sur 3. Il en résulte trois fractionnements des valeurs de la chaîne, mais un total de cinq chaînes dans la sortie : le délimiteur est inclus après les fractionnements, jusqu’à ce que le nombre maximal de trois sous-chaînes soit atteint. Les autres délimiteurs de la dernière sous-chaîne font partie intégrante de la sous-chaîne.
'Chocolate-Vanilla-Strawberry-Blueberry' -split '(-)', 3; Chocolate - Vanilla - Strawberry-Blueberry
<Nombre maximal de sous-chaînes>
Spécifie le nombre maximal de fractionnements d’une chaîne. La comportement par défaut est que toutes les sous-chaînes sont fractionnées par le délimiteur. S’il existe plusieurs sous-chaînes, elles sont concaténés dans la dernière sous-chaîne. S’il existe moins de sous-chaînes, toutes les sous-chaînes sont retournées. La valeur 0 et les valeurs négatives retournent toutes les sous-chaînes.Le paramètre Nombre maximal de sous-chaînes ne spécifie pas le nombre maximal d’objets qui sont retournés ; sa valeur est égale au nombre maximal de fois qu’une chaîne est fractionnée. Si vous soumettez plusieurs chaînes (un tableau de chaînes) à l’opérateur Split, la limite Nombre maximal de sous-chaînes est appliquée séparément à chaque chaîne. Exemple :
$c = "Mercury,Venus,Earth,Mars,Jupiter,Saturn,Uranus,Neptune" $c -split ",", 5 Mercury Venus Earth Mars Jupiter,Saturn,Uranus,Neptune
<Bloc de script>
Une expression qui spécifie les règles pour l’application du délimiteur. L’expression doit s’évaluer à $true ou à $false. Placez le bloc de script entre des accolades. Exemple :$c = "Mercury,Venus,Earth,Mars,Jupiter,Saturn,Uranus,Neptune" $c -split {$_ -eq "e" -or $_ -eq "p"} M rcury,V nus,Earth,Mars,Ju it r,Saturn,Uranus,N tun
<Options>
Placez le nom de l’option entre des guillemets. Les options sont valides seulement quand le paramètre <Nombre maximal de sous-chaînes> est utilisé dans l’instruction.La syntaxe pour le paramètre Options est :
"SimpleMatch [,IgnoreCase]" "[RegexMatch] [,IgnoreCase] [,CultureInvariant] [,IgnorePatternWhitespace] [,ExplicitCapture] [,Singleline | ,Multiline]"
Les options SimpleMatch sont :
-- SimpleMatch : Utiliser une comparaison de chaînes simple lors de l’évaluation du délimiteur. Ne peut pas être utilisée avec RegexMatch.
-- IgnoreCase : Force une correspondance ne respectant pas la casse, même si l’opérateur -cSplit est spécifié.
Les options RegexMatch sont :
-- RegexMatch : Utiliser une correspondance d’expression régulière pour évaluer le délimiteur. Il s’agit du comportement par défaut. Ne peut pas être utilisée avec SimpleMatch.
-- IgnoreCase : Force une correspondance ne respectant pas 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 seulement avec RegexMatch.
-- IgnorePatternWhitespace : Ignore l’espace blanc sans caractère d’échappement et les commentaires marqués du signe dièse (#). Valide seulement avec RegexMatch.
-- Multiline : Le mode Multiline reconnaît le début et la fin des lignes et des chaînes. Valide seulement avec RegexMatch. Singleline est la valeur par défaut.
-- Singleline : Le mode Singleline reconnaît seulement le début et la fin des chaînes. Valide seulement avec RegexMatch. Singleline est la valeur par défaut.
-- ExplicitCapture : Ignore les groupes de correspondances non nommés, de sorte que seuls les groupes de capture explicites sont retournés dans la liste des résultats. Valide seulement avec RegexMatch.
OPÉRATEURS SPLIT UNAIRES ET BINAIRES
L’opérateur split unaire (-split <chaîne>) a une priorité plus élevée qu’une virgule. Par conséquent, si vous soumettez une liste de chaînes séparées par des virgules à l’opérateur split unaire, seule la première chaîne (avant la première virgule) est fractionnée.
Pour fractionner plusieurs chaînes, utilisez l’opérateur split binaire (<chaîne> -split <délimiteur>). Placez toutes les chaînes entre des parenthèses ou bien stockez les chaînes dans une variable, puis soumettez la variable à l’opérateur split.
Prenons l’exemple suivant :
-split "1 2", "a b"
1
2
a b
"1 2", "a b" -split " "
1
2
a
b
-split ("1 2", "a b")
1
2
a
b
$a = "1 2", "a b"
-split $a
1
2
a
b
EXEMPLES
L’instruction suivante fractionne la chaîne au niveau de l’espace blanc.
C:\PS> -split "Windows PowerShell 2.0`nWindows PowerShell with remoting"
Windows
PowerShell
2.0
Windows
PowerShell
with
remoting
L’instruction suivante fractionne la chaîne au niveau des virgules.
C:\PS> "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 niveau du modèle « er ».
C:\PS>"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 au niveau de la lettre « N ».
C:\PS> "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 au niveau de « e » et de « t ».
C:\PS> "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 fractionne la chaîne au niveau de « r » et de « e », mais limite les sous-chaînes résultantes à six.
C:\PS> "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 fractionne une chaîne en trois sous-chaînes.
C:\PS> "a,b,c,d,e,f,g,h" -split ",", 3
a
b
c,d,e,f,g,h
L’instruction suivante fractionne deux chaînes en trois sous-chaînes. (La limite est appliquée indépendamment à chaque chaîne.)
C:\PS> "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 here-string au niveau du premier chiffre. Elle utilise l’option Multiline pour reconnaître le début de chaque ligne et de la chaîne.
La valeur 0 représente la valeur « retourner tout » du paramètre Nombre maximal de sous-chaînes. Vous pouvez utiliser des options, comme Multiline, seulement quand la valeur de Nombre maximal de sous-chaînes est spécifiée.
C:\PS> $a = @'
1The first line.
2The second line.
3The third of three lines.
'@
C:\PS> $a -split "^\d", 0, "multiline"
The first line.
The second line.
The third of three lines.
L’instruction suivante utilise l’option SimpleMatch pour indiquer à l’opérateur -split d’interpréter littéralement le délimiteur point (.).
Avec la valeur par défaut, RegexMatch, le point placé entre des guillemets (".") est interprété de façon à correspondre à n’importe quel caractère, sauf un caractère de saut de ligne. Par conséquent, l’instruction Split retourne une ligne vide pour chaque caractère, à l’exception du saut de ligne.
La valeur 0 représente la valeur « retourner tout » du paramètre Nombre maximal de sous-chaînes. Vous pouvez utiliser des options, comme SimpleMatch, seulement quand la valeur de Nombre maximal de sous-chaînes est spécifiée.
C:\PS> "This.is.a.test" -split ".", 0, "simplematch"
This
is
a
test
L’instruction suivante fractionne la chaîne au niveau d’un délimiteur parmi deux, selon la valeur d’une variable.
C:\PS> $i = 1
C:\PS> $c = "LastName, FirstName; Address, City, State, Zip"
C:\PS> $c -split {if ($i -lt 1) {$_ -eq ","} else {$_ -eq ";"}}
LastName, FirstName
Address, City, State, Zip
Les instructions split suivantes fractionnent un fichier XML d’abord au crochet angulaire, puis au point-virgule. Le résultat est une version lisible du fichier XML.
C:\PS> get-process PowerShell | export-clixml ps.xml
C:\PS> $x = import-clixml ps.xml
C:\PS> $x = $x -split "<"
C:\PS> $x = $x -split ";"
Pour afficher le résultat, tapez « $x ».
C:\PS> $x
@{__NounName=Process
Name=PowerShell
Handles=428
VM=150081536
WS=34840576
PM=36253696
...
VOIR AUSSI
Split-Path
about_Operators
about_Comparison_Operators
about_Join