Ceci est une ancienne révision du document !
Les bases de Powershell - 2ème partie
On continue avec les bases du langage Powershell.
Les chaînes de caractères
Manipuler des chaînes de caractères est utile pour afficher des résultats, extraire des données… A cette effet, Powershell dispose de certaines méthodes et de l'interprétation de certains caractères spéciaux, dits d'échappements.
Caractères d'échappements
| Caractère | Explication |
|---|---|
`r | Crée un retour charriot, en gros revient au début de la ligne |
`n | Crée un nouvelle ligne |
`r`n | Du coup, retour charriot sur une nouvelle ligne, l'équivalent de la touche Entrée dans un traitement de texte |
`t | Crée une tabulation |
`b | Reviens sur un carcatère (Backspace). Ce retour est non destructif. Je cherche encore son utilité… |
`a | Émet un bip (Alarm) |
`0 | Caractère nul. A l'affichage, équivaut à un espace mais différent d'un point de vu codage de caractère |
`' | Permet d'afficher ' sans qu'il ne soit interprété |
`` | Permet d'afficher ` sans qu'il ne soit interprété |
`" | Permet d'afficher " sans qu'il ne soit interprété |
Les méthodes
| Caractère | Explication | Exemple |
|---|---|---|
.Chars() | Renvoie le caractère présent à la position indiquée dans la chaîne A. La première position est numéroté 0. | $A = "abcd" $A.Chars(1) b |
.CompareTo() | Compare une chaîne avec une autre. Le résutat peut être -1, 1 ou 0 selon que la référence de la chaîne comparée précède, suit ou apparaît à la même position que la référence de la chaîne traité. En gros, 0 si les chaînes sont identiques, 1 si la chaîne A a plus de caractères que la chaîne B et/ou que ces derniers sont plus élevés dans la hiérarchie des caractères (E>e) et -1 si la chaîne B a plus de caractères que la chaîne A et/ou que ces derniers sont plus élevés dans la hiérarchie des caractères. | $A = "abcd" $B = "abc" $A.CompareTo($B) 1 |
.Contains() | Renvoie $true ou $false selon que la chaîne A contient ou pas la chaîne B. Si B est vide, la réponse sera toujours $true. | $A = "abcd" $B = "bc" $A.Contains($B) $true |
.EndsWith() | Renvoie $true ou $false selon que la chaîne A finit ou pas par la chaîne B. Si B est vide, la réponse sera toujours $true. | $A = "abcd" $B = "cd" $A.EndsWith($B) $true |
.Equals() | Renvoie $true ou $false selon que la chaîne A est égal ou pas à la chaîne B. Sensible à la casse. | $A = "abc" $B = "ABC" $A.Equals($B) $false |
.IndexOf() | Renvoie la position de la première occurrence de la chaîne B dans la chaîne A. La première position est numéroté 0 et -1 sera renvoyé si aucune occurrence n'est trouvé. | $A = "abc" $B = "c" $A.IndexOf($B) 2 |
.IndexOfAny() | Renvoie la position de la première occurrence trouvé dans la chaîne A parmi les caractères de la chaîne B. La première position est numéroté 0. En gros, il indique la position dès qu'il trouve dans A, une lettre présente dans B. La première position est numéroté 0 et -1 sera renvoyé si aucune occurrence n'est trouvé. | $A = "abcdef" $B = "Cfe" $A.IndexOfAny($B) 4 |
.Insert() | Insert la chaîne B dans la chaîne A à la position indiquée. | $A = "abcdef" $B = "ghi" $A.Insert(3,$B) abcghidef |
.GetEnumerator() | Renvoie sur des lignes séparées chaque caractère de A. | $A = "abc" $A.GetEnumerator(3,$B) a b c |
.LastIndexOf() | Comme IndexOf() mais pour la dernière occurence. La première position est numéroté 0 et -1 sera renvoyé si aucune occurrence n'est trouvé. | $A = "abcdefdefacb" $B = "c" $A.LastIndexOf($B) 10 |
.LastIndexOfAny() | Comme IndexOfAny() mais pour la dernière occurence. La première position est numéroté 0 et -1 sera renvoyé si aucune occurrence n'est trouvé. | $A = "abcdefdefacb" $B = "Cfe" $A.LastIndexOfAny($B) 8 |
.PadLeft() | Ajoute autant d'espace qu'indiqué au début de la chaîne A. | $A = "abc"
$A.PadLeft(10)
abc
|
.PadRight() | Même chose mais à la fin. | $A = "abc" $B = "def" $A.PadRight(10) + $B abc def |
.Remove() | Supprime la quantité indiquée de caractères à partir de la position indiquée. | $A = "abcdefghi" $A.Remove(3,5) abci |
.Replace() | Remplace toutes les occurrences d'un caractère par un autre caractère. | $A = "abcabcabc"
$A.Replace("a","i")
ibcibcibc
|
.Split() | Sépare la chaîne en plusieurs chaines. La séparation se fait au niveau du caractère indiqué. | $A = "Fichier.txt"
$A.Split(".")
Fichier
txt
|
.StartsWith() | Renvoie $true si la chaîne A commence par la chaîne B et $false dans le cas contraire. | $A = "abcdefghi" $B = "abc" $A.StartsWith($B) $true |
.Substring() | Extraie de la chaîne A, à partir de la position indiquée, la quantité de caractère indiquée. | $A = "abcdefghi" $A.Substring(4,3) efg |
.ToCharArray() | Transforme une chaîne de caractère en tableau contenant chaque caractère. A l'affichage, ça ressemble à .GetEnumerator() mais le type d'objet est différent. | $A = "abc" $A.ToCharArray() a b c |
.ToLower() | Convertit toutes les majuscules de la chaîne en minuscule. | $A = "AbCdEf" $A.ToLower() abcdef |
.ToUpper() | Convertit toutes les minuscules de la chaîne en majuscule. | $A = "AbCdEf" $A.ToUpper() ABCDEF |
.Trim() | Supprime les espaces en début et à la fin de la chaîne mais pas ceux au milieu. | $A = " abc def " $B = "ghi" $A.Trim() + $B abc defghi |
.TrimEnd() | Supprime les espaces à la fin de la chaîne mais pas ceux du début ou au milieu. | $A = " abc def " $B = "ghi" $A.TrimEnd() + $B abc defghi |
.TrimStart() | Supprime les espaces au début de la chaîne mais pas ceux au milieu ou à la fin. | $A = " abc def " $B = "ghi" $A.TrimStart() + $B abc def ghi |
Discussion