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 Split :

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

Syntaxe

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

Les noms des 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 utiliser -split n’importe quelle instruction Split binaire (une instruction Split qui inclut un délimiteur ou un bloc de script). Les opérateurs et -split les opérateurs ne respectent pas la -iSplit casse. L’opérateur respecte la -cSplit casse, ce qui signifie que le cas est pris en compte lorsque les règles de délimiteur sont appliquées.

Paramètres

<Chaîne> ou <chaîne[]>

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 un espace blanc, y compris des espaces et des 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 le cadre de la sortie, la commande retourne le délimiteur dans le cadre de la sortie ; Toutefois, le fractionnement de la chaîne pour renvoyer 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 y a plus de 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> la valeur 3 est définie. Cela entraîne 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. Les 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 sont ignorées.

<ScriptBlock>

Expression qui spécifie les règles d’application du délimiteur. L’expression doit évaluer $true ou $false. Placez le bloc de script dans les 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 une comparaison de chaînes simple lors de l’évaluation du délimiteur. Impossible d’utiliser 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. C’est le paramétrage 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 émis et les commentaires marqués avec le signe numérique (#). Valide uniquement avec RegexMatch.
  • Multiligne : le mode multiligne force ^ et $ correspond à la fin 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 monoligne traite la chaîne d’entrée en tant que SingleLine. Elle force le . caractère à correspondre à chaque caractère (y compris les lignes nouvelles), au lieu de faire correspondre chaque caractère à l’exception de la ligne de 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.

Remarque

SingleLine est le comportement par défaut. Singleline et Multiline ne peuvent pas être utilisés avec le paramètre d’options. Cette opération a été résolue dans PowerShell 6.0. Le travail autour consiste à utiliser des modificateurs en mode dans votre expression régulière. Vous pouvez en savoir plus sur les modificateurs de mode dans les options d’expression régulière

OPÉRATEURS UNARY et BINARY SPLIT

L’opérateur de fractionnement unaire (-split <string>) a une priorité supérieure à une virgule. Par conséquent, si vous soumettez 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 envoyer 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 à 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 à « 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 fractionne 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 fractionne 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 fractionne 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 dans la chaîne ici au premier chiffre. Il utilise l’option multiligne pour reconnaître le début de chaque ligne et chaîne.

Le 0 représente la valeur « return all » du paramètre Max-substrings. Vous pouvez utiliser des options, telles que Multiline, 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 de barre oblique inverse pour échapper au délimiteur point (.).

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

"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 littéralement le délimiteur point (.).

Le 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 fractionne 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