Comment trouver la position d'une sous-chaîne dans PowerShell

  1. Chaîne et sous-chaîne dans PowerShell
  2. Utiliser la méthode IndexOf pour trouver la position de la sous-chaîne en PowerShell
  3. Utiliser la méthode LastIndexOf pour trouver la position de la sous-chaîne en PowerShell
  4. Utiliser le cmdlet Select-String pour trouver la position de la sous-chaîne en PowerShell
  5. Conclusion
Comment trouver la position d'une sous-chaîne dans PowerShell

Dans le scripting PowerShell, la capacité de localiser la position d’une sous-chaîne dans une chaîne est une exigence fondamentale pour diverses tâches, allant du traitement de texte à la manipulation de données. PowerShell offre plusieurs méthodes et cmdlets pour trouver efficacement la position des sous-chaînes dans les chaînes.

Cet article explore et détaille diverses techniques pour accomplir cette tâche. Chaque méthode fournit des fonctionnalités uniques, répondant à différents scénarios et exigences.

De l’utilisation de méthodes simples de manipulation de chaînes à l’exploitation de la puissance des expressions régulières, ces approches offrent polyvalence et flexibilité pour les recherches de sous-chaînes dans les scripts et commandes PowerShell.

En comprenant et en utilisant ces méthodes, les utilisateurs de PowerShell peuvent gérer efficacement les recherches de sous-chaînes dans les chaînes, leur permettant de manipuler, d’extraire ou de traiter des données plus efficacement.

Ce guide complet vise à explorer, expliquer et démontrer la mise en œuvre de diverses approches pour trouver la position des sous-chaînes dans les chaînes en PowerShell.

Chaîne et sous-chaîne dans PowerShell

Une chaîne est un type de donnée commun utilisé dans PowerShell. C’est la séquence de caractères pour représenter des textes.

Vous pouvez définir une chaîne dans PowerShell en utilisant des guillemets simples ou doubles. Par exemple, "ABC" ou 'ABC'.

Une sous-chaîne est tout texte spécifique à l’intérieur d’une chaîne. Si ABC est une chaîne, B est sa sous-chaîne.

Parfois, il peut y avoir une condition où vous devez trouver une certaine partie d’une chaîne ou la position d’une sous-chaîne dans un fichier texte. La méthode IndexOf et LastIndexOf rapportent principalement la position (indice) d’une sous-chaîne spécifiée en PowerShell.

Utiliser la méthode IndexOf pour trouver la position de la sous-chaîne en PowerShell

La méthode IndexOf dans PowerShell est utilisée pour déterminer la position (indice) de la première occurrence d’une sous-chaîne spécifiée dans une chaîne donnée. Cette méthode offre flexibilité et facilité d’utilisation, permettant aux utilisateurs d’effectuer des recherches précises de sous-chaînes dans les chaînes.

Syntaxe :

$position = $string.IndexOf($substring)
  • $string: Représente la chaîne originale où la recherche est effectuée.
  • $substring: Spécifie la sous-chaîne à localiser dans $string.
  • $position: Stocke la position (indice) de la première occurrence de $substring dans $string.

Dans cette méthode, vous pouvez spécifier la chaîne, la position de recherche de départ dans l’objet chaîne, le nombre de caractères à rechercher et le type de règles à utiliser pour la recherche.

L’exemple ci-dessous trouve la position de la première occurrence de la sous-chaîne to dans la chaîne donnée.

"Welcome to PowerShell Tutorial".IndexOf("to")

Sortie :

8

La méthode IndexOf compte l’indice à partir de zéro, ce qui affiche le résultat 8.

Dans le code suivant, 9 est spécifié comme la position de recherche de départ dans la chaîne.

"Welcome to PowerShell Tutorial".IndexOf("to", 9)

Lorsque vous spécifiez la position de recherche de départ, le caractère avant cette position est ignoré, donc elle trouve la position de la première occurrence de la sous-chaîne to après l’indice 9.

Sortie :

24

La méthode IndexOf tient également compte des scénarios où la sous-chaîne n’est pas présente dans la chaîne, renvoyant -1 dans de tels cas.

Par exemple, la recherche d’une sous-chaîne py dans la chaîne donnée affiche le résultat -1.

"Welcome to PowerShell Tutorial".IndexOf("py")

Sortie :

-1

Utilisation avancée : Sensibilité à la casse

La méthode IndexOf en PowerShell est sensible à la casse par défaut. Cependant, elle peut être modifiée pour effectuer une recherche insensible à la casse en utilisant le paramètre StringComparison.

$string = "PowerShell is versatile and powerful"
$substring = "VERSATILE"

$position = $string.IndexOf($substring, [System.StringComparison]::InvariantCultureIgnoreCase)
Write-Host "Position of substring '$substring' (case-insensitive) is $position"

Sortie :

Position of substring 'VERSATILE' (case-insensitive) is 14

Explication :

  • $string: Contient la chaîne originale.
  • $substring: Contient la sous-chaîne à trouver (dans une casse différente).
  • $string.IndexOf($substring, [System.StringComparison]::InvariantCultureIgnoreCase): Utilise la méthode IndexOf avec un paramètre supplémentaire [System.StringComparison]::InvariantCultureIgnoreCase pour effectuer une recherche insensible à la casse.
  • La position résultante est stockée dans $position et affichée à l’aide de Write-Host.

Utiliser la méthode LastIndexOf pour trouver la position de la sous-chaîne en PowerShell

Vous pouvez également utiliser la méthode LastIndexOf pour trouver l’indice d’une sous-chaîne en PowerShell. La méthode LastIndexOf trouve la position de la dernière occurrence d’un certain caractère à l’intérieur d’une chaîne.

La méthode LastIndexOf en PowerShell sert de moyen puissant pour identifier la position (indice) de la dernière occurrence d’une sous-chaîne spécifiée dans une chaîne donnée. En permettant aux utilisateurs de rechercher à partir de la fin de la chaîne, cette méthode donne la flexibilité de localiser la dernière instance d’une sous-chaîne.

Syntaxe :

$position = $string.LastIndexOf($substring)
  • $string: Représente la chaîne originale où la recherche est effectuée.
  • $substring: Spécifie la sous-chaîne à localiser dans $string.
  • $position: Stocke la position (indice) de la dernière occurrence de $substring dans $string.

La commande suivante trouve l’indice de la dernière occurrence d’une sous-chaîne to dans la chaîne donnée.

"Welcome to PowerShell Tutorial".LastIndexOf("to")

Comme montré, elle affiche la position de la dernière apparition d’une sous-chaîne to.

Sortie :

24

Voyons un autre exemple avec une variable de chaîne $hello.

$hello = "HelloHelloHello"

Si vous utilisez la méthode LastIndexOf pour trouver la sous-chaîne He dans $hello, elle retourne 10 car c’est le dernier indice où He se produit.

$hello.LastIndexOf("He")

Sortie :

10

La méthode LastIndexOf retourne -1 si la sous-chaîne n’est pas trouvée dans la chaîne.

Par exemple :

$hello.LastIndexOf("Hi")

Sortie :

-1

Utilisation avancée : Sensibilité à la casse

Tout comme la méthode IndexOf, LastIndexOf prend en charge une recherche insensible à la casse en utilisant le paramètre StringComparison.

$string = "PowerShell is versatile and powerful"
$substring = "POWERFUL"

$position = $string.LastIndexOf($substring, [System.StringComparison]::InvariantCultureIgnoreCase)
Write-Host "Position of the last occurrence of substring '$substring' (case-insensitive) is $position"

Sortie :

Position of the last occurrence of substring 'POWERFUL' (case-insensitive) is 28

Explication :

  • $string: Contient la chaîne originale.
  • $substring: Contient la sous-chaîne à trouver (dans une casse différente).
  • $string.LastIndexOf($substring, [System.StringComparison]::InvariantCultureIgnoreCase): Utilise la méthode LastIndexOf avec un paramètre supplémentaire [System.StringComparison]::InvariantCultureIgnoreCase pour effectuer une recherche insensible à la casse.
  • La position résultante est stockée dans $position et affichée à l’aide de Write-Host.

Utiliser le cmdlet Select-String pour trouver la position de la sous-chaîne en PowerShell

Le cmdlet Select-String dans PowerShell est conçu pour effectuer des recherches de chaînes basées sur des expressions régulières (regex) ou des chaînes simples. Il facilite des capacités puissantes de correspondance de motifs, permettant aux utilisateurs de rechercher des sous-chaînes spécifiques dans les chaînes et d’extraire des informations pertinentes.

Syntaxe :

$match = $string | Select-String -Pattern $substring -AllMatches
  • $string: Représente la chaîne originale où la recherche est effectuée.
  • $substring: Spécifie la sous-chaîne à localiser dans $string.
  • $match: Stocke le résultat de l’opération de recherche, y compris la position (indice) de la sous-chaîne dans la chaîne.

Le cmdlet Select-String recherche des textes dans des chaînes et des fichiers. Il est similaire à grep dans UNIX.

Par défaut, il trouve la première correspondance dans chaque ligne et affiche tout le texte contenant la correspondance.

"HelloHelloHello" | Select-String "He"

Sortie :

HelloHelloHello

La propriété Matches de Select-String trouve la correspondance entre la chaîne spécifiée et la chaîne ou le fichier d’entrée. La position de la sous-chaîne correspondante est stockée dans la propriété Index.

L’exemple suivant montre comment vous pouvez utiliser la propriété Matches.Index pour trouver la position d’une sous-chaîne dans une chaîne.

("HelloHelloHello" | Select-String "He").Matches.Index

Il affiche seulement l’indice 0 car Select-String s’arrête après la première correspondance dans chaque ligne de texte.

Sortie :

0

Vous pouvez utiliser le paramètre -AllMatches pour rechercher plus d’une correspondance dans chaque ligne.

("HelloHelloHello" | Select-String "He" -AllMatches).Matches.Index

Comme montré, il imprime toutes les positions de la sous-chaîne spécifiée.

Sortie :

0
5
10

L’exemple suivant trouve toutes les positions d’une sous-chaîne spécifiée dans un fichier texte test.txt. Le test.txt contient la chaîne "Utilisez le cmdlet Select-String pour trouver la position de la sous-chaîne dans PowerShell".

(Get-Content test.txt | Select-String "the" -AllMatches).Matches.Index

Sortie :

4
37

Cette méthode est la meilleure option pour trouver toutes les positions des caractères dans une chaîne.

Select-String ne retourne aucune correspondance ($null) si la sous-chaîne n’est pas trouvée dans la chaîne.

$string = "PowerShell is versatile and powerful"
$substring = "Python"

$match = $string | Select-String -Pattern $substring -AllMatches
if (-not $match) {
    Write-Host "Substring '$substring' not found in the string."
}
else {
    $position = $match.Matches[0].Index
    Write-Host "Position of substring '$substring' is $position"
}

Sortie :

Substring 'Python' not found in the string.

Explication :

  • $string: Contient la chaîne originale.
  • $substring: Représente la sous-chaîne à localiser.
  • $string | Select-String -Pattern $substring -AllMatches: Effectue une recherche pour $substring dans $string en utilisant Select-String.
  • Une condition if vérifie si le résultat de la correspondance est $null (-not $match), affichant un message si la sous-chaîne n’est pas trouvée.

Conclusion

La capacité de localiser la position d’une sous-chaîne dans une chaîne est vitale pour de nombreuses tâches de traitement de texte et de manipulation de données en PowerShell. PowerShell offre plusieurs méthodes et cmdlets, tels que IndexOf, LastIndexOf et Select-String, pour accomplir efficacement cette tâche.

Les méthodes IndexOf et LastIndexOf fournissent des moyens simples de trouver la position des sous-chaînes dans les chaînes. Ces méthodes offrent des fonctionnalités pour effectuer des recherches sensibles et insensibles à la casse, permettant aux utilisateurs de déterminer les positions exactes des sous-chaînes dans les chaînes.

D’autre part, le cmdlet Select-String exploite la puissance des expressions régulières pour les recherches de sous-chaînes. Ce cmdlet offre d’importantes capacités de correspondance de motifs, y compris la capacité de trouver toutes les occurrences d’une sous-chaîne et d’extraire leurs positions dans les chaînes.

Comprendre et utiliser ces méthodes et cmdlets permet aux utilisateurs de PowerShell de manipuler et de traiter les chaînes efficacement. En utilisant ces outils de manière appropriée, les utilisateurs peuvent gérer divers scénarios de recherche de sous-chaînes, extraire des informations précises et rationaliser leurs scripts et commandes PowerShell pour une manipulation efficace des données.

Vous aimez nos tutoriels ? Abonnez-vous à DelftStack sur YouTube pour nous aider à créer davantage de tutoriels vidéo de haute qualité. Abonnez-vous
Rohan Timalsina avatar Rohan Timalsina avatar

Rohan is a learner, problem solver, and web developer. He loves to write and share his understanding.

LinkedIn Website

Article connexe - PowerShell String