Manipuler les chaînes de caractères
Les bases
1. Qu’est-ce qu’une chaîne de caractères ?
La gestion des chaînes de caractères est chose courante dans les différents types de langages de programmation. Il s’agit donc d’une partie importante à maîtriser correctement ou, tout du moins, un minimum.
Commençons tout d’abord par définir ce qu’est une chaîne de caractères ou string en anglais.
Le terme string est couramment utilisé dans PowerShell et de manière plus globale sur Windows (par exemple dans la base de registre). En termes informatiques, une chaîne de caractères est un type de données correspondant à une suite ordonnée de plusieurs caractères. Autrement dit, c’est un ensemble de symboles faisant partie d’un jeu de caractères qui est lui-même défini par le code ASCII.
2. Qu’est-ce que le code ASCII ?
Dans un ordinateur, les caractères ne peuvent pas être stockés dans la mémoire. Ceux-ci seront stockés sous forme numérique. Le code ASCII permet de transcrire un caractère en une valeur numérique.
3. Chaîne de caractères en exemple
Une chaîne de caractères peut être une simple ligne entre guillemets :
"Bonjour et bienvenue dans notre livre"
ou encore :
"Damien Van Robaeys et Jérôme...
Méthodes disponibles pour gérer les chaînes
Différentes méthodes existent pour gérer les chaînes de caractères.
Pour savoir ce qu’est une méthode, consultez le chapitre La gestion des objets.
Pour lister les méthodes, nous utiliserons la cmdlet Get-Member sur un objet String (chaîne de caractères).
<Objet> | Get-Member
Nous trierons ensuite le résultat du Get-Member sur la propriété Method.
<Objet> | Get-Member -MemberType Method
Reprenons l’exemple précédent :
$Texte = "Apprenons PowerShell ensemble"
La cmdlet Get-Member sur la variable $Texte triée sur les méthodes nous donnera le résultat suivant :
PS C:\Users\damien.vanrobaeys> $Texte | get-member -MemberType Method
Name
----
Clone
CompareTo
Contains
CopyTo
EndsWith
Equals
GetEnumerator
GetHashCode
GetType
GetTypeCode
IndexOf
IndexOfAny
Insert
IsNormalized
LastIndexOf
LastIndexOfAny
Normalize
PadLeft
PadRight
Remove
Replace
Split
StartsWith
Substring
ToBoolean
ToByte
ToChar
ToCharArray
ToDateTime
ToDecimal
ToDouble
ToInt16
ToInt32
ToInt64
ToLower
ToLowerInvariant
ToSByte
ToSingle
ToString ...
Manipulation des chaînes avec les méthodes
Dans les exemples suivants, nous utiliserons la chaîne de caractères suivante :
$Texte = "Apprenons PowerShell ensemble"
1. Compter le nombre de caractères
Pour compter le nombre de caractères que contient un élément, nous utiliserons la propriété Length.
$Texte = "Apprenons PowerShell ensemble"
Le résultat sera 29 caractères.
Cela peut également s’écrire :
("Apprenons PowerShell ensemble").Length
29
2. Passer le contenu en majuscules
Dans notre fichier, le contenu est majoritairement en minuscules. Nous allons tout passer en majuscules.
La méthode à utiliser pour cela est ToUpper().
$Texte = "Apprenons PowerShell ensemble"
$Texte.ToUpper()
APPRENONS POWERSHELL ENSEMBLE
Cela peut également s’écrire :
("Apprenons PowerShell ensemble").ToUpper()
APPRENONS POWERSHELL ENSEMBLE
3. Passer le contenu en minuscules
Utilisons la chaîne de caractères suivante :
$Texte = "APPRENONS POWERSHELL ENSEMBLE"
Nous allons tout passer en minuscules.
La méthode à utiliser pour cela est ToLower().
$Texte = "APPRENONS POWERSHELL ENSEMBLE"
$Texte.ToLower()
apprenons powershell ensemble
Cela peut également s’écrire :
("APPRENONS POWERSHELL ENSEMBLE").ToLower()
apprenons powershell ensemble
4. Remplacer des caractères
En parcourant les méthodes disponibles, nous remarquons celle nommée Replace. Il s’agit d’une des méthodes les plus utiles pour la gestion des fichiers et chaînes de caractères.
Cette méthode nous permettra de modifier/remplacer un caractère se trouvant dans une chaîne et s’utilise ainsi :
<Chaîne de caractères>.Replace("ancien élément","nouvel élément")
ou encore :
<Chaîne de caractères> -Replace "ancien élément","nouvel élément"
Reprenons notre chaîne :
$Texte = "Apprenons PowerShell ensemble"
Nous souhaitons remplacer le mot ensemble par ensemble, avec joie :
$Texte.replace("ensemble","ensemble, avec joie")
Ci-dessous...