PowerShell et Split : découper une chaîne de caractères

I. Présentation

Dans ce tutoriel, je vais vous apprendre à utiliser la méthode Split() en PowerShell. Une méthode indispensable pour découper une chaîne de caractères.

La chaîne de caractères envoyée en entrée et découpée avec Split() permettra d'obtenir un tableau de chaînes de caractères : string[]. Le délimiteur utilisé par Split() peut être un caractère unique, une chaîne, mais aussi un pattern.

💡 Apprenez à utiliser la méthode Substring() de PowerShell

II. PowerShell - Split() : obtenir un tableau à partir d'une chaîne

A. Exemples basiques Split() PowerShell

Je vais rapidement vous faire comprendre l'intérêt de la méthode Split(). Déclarons une variable sous la forme d'une adresse e-mail :

$Email = "[email protected]"

Maintenant, essayons d'obtenir l'identifiant de l'utilisateur d'une part (prenom.nom) et le domaine de l'autre (it-connect.fr). Ce qu'il y a entre deux, et c'est commun à toutes les adresses e-mails, c'est le "@" : ce sera le caractère que l'on va utiliser avec Split().

On va donc exécuter :

$Email.Split("@")

Mais l'on pourrait aussi utiliser l'écriture ci-dessous :

$Email -Split("@")

En retour, on obtient :

prenom.nom
it-connect.fr

En fait, la méthode Split() retourne un tableau de valeur. Du coup la valeur "prenom.nom" correspond à l'index [0] tandis que la valeur "it-connect.fr" correspond à l'index [1].

Exécutez les commandes ci-dessous, vous verrez par vous-même :

$EmailSplit = $Email -Split("@")
$EmailSplit.GetType()
$EmailSplit[0]
$EmailSplit[1]

En image directement :

PowerShell Split() - Exemple

Nous avons utilisé le caractère "@" comme séparateur, mais on aurait pu prendre un mot complet ou un autre caractère. Par exemple, on pourrait découper une adresse IP en se basant sur le point comme caractère pour spliter (diviser) notre chaîne :

$IPAddress = "192.168.1.1"
($IPAddress).split(".")

Il faut savoir que l'on peut récupérer facilement une valeur de notre tableau. Par exemple pour affecter la première valeur à une variable :

$IPPremierOctet = ($IPAddress).split(".")[0]

De la même façon, et c'est bien utile lorsque l'on le connaît pas à l'avance combien de blocs on va obtenir, on peut récupérer la dernière valeur avec l'index -1 (classique avec PowerShell) :

$IPDernierOctet = ($IPAddress).split(".")[-1]

Cela fonctionne aussi très bien avec l'espace comme caractère de référence :

$Phrase = "Bienvenue sur le site IT-Connect !"
($Phrase).Split(" ")

B. Split() et Max-substrings

La méthode Split() supporte plusieurs paramètres, et pas seulement le délimiteur. On peut également lui indiquer le nombre de morceaux à retourner, c'est-à-dire le nombre de sous-chaînes à générer. Reprenons notre phrase précédente avec la variable $Phrase : on va la découper en deux seulement.

$Phrase = "Bienvenue sur le site IT-Connect !"
($Phrase).Split(" ",2)

La méthode va s'arrêter après le premier espace pour séparer en deux la chaîne. Ce qui va donner deux chaînes distinctes :

Bienvenue
sur le site IT-Connect !

On peut aussi écrire :

$Phrase -Split " ",2

C. Split() et ScriptBlock

La méthode Split() supporte également un bloc de script comme entrée pour séparer la chaîne. En fait, c'est particulièrement utile pour spécifier deux délimiteurs différents.

Prenons une URL comme valeur de référence :

$URL = "https://www.it-connect.fr"

Maintenant, on va séparer cette chaîne de caractères en prenant deux caractères : ":" ou ".", ce qui donne :

$URL -split { $_ -eq ":" -or $_ -eq "." }

Voilà, nous venons de voir comment utiliser la méthode Split() avec PowerShell, une manière simple, mais redoutable pour diviser une chaîne de caractères en plusieurs sous-chaînes.

Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Partager sur Google+ Envoyer par mail

Florian Burnel

Ingénieur système et réseau et cofondateur d'IT-Connect. Je souhaite partager mon expérience et mes découvertes au travers de mes articles. Généraliste avec une attirance particulière pour les solutions Microsoft et le scripting. Bonne lecture.

florian a publié 3065 articlesVoir toutes les publications de cet auteur

2 thoughts on “PowerShell et Split : découper une chaîne de caractères

  • Petit complément concernant les index avec la méthode Split :

    Si on ne sait pas à l’avance combien d’entrées on va obtenir après un Split, on peut obtenir la dernière en utilisant l’index [-1], par exemple :
    $IPPremierOctet = ($IPAddress).split(« . »)[-1]

    L’index [-2] nous donne l’avant-dernière entrée, et ainsi de suite

    Répondre

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

 

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.