J'essaie de trouver des sous-chaînes dans la chaîne à l'aide du script PowerShell. En fait, je lis une ligne de fichier par ligne qui contient des milliers de chemins. Je filtrant chaque chemin qui vient du fichier. Les filtres de chemin trouvent des sous-chaînes dans le chemin.
Mais suivi est mon code d'exemple. p> contient code> renvoie false lorsque la sous-chaîne est
sroot code> ou
Troot code>.
$/Patil/TEMP/PRoot/Digvijay/Patil/1.png
$/Patil/TEMP/SRoot/Digvijay/Patil/2.png
$/Patil/TEMP/TRoot/Digvijay/Patil/3.png
$/Patil/TEMP/WRoot/Digvijay/Patil/3.png
3 Réponses :
J'ai essayé votre code et cela fonctionne comme prévu (modifié Je pense que vous pourriez avoir du mal à un problème sensible à la casse.
Je vous suggère d'essayer d'appliquer la fonction $ line.contains ('orthot') code> à
$ line.contains ("proot" code>) L'exemple d'entrée).
tolower () code> à la chaîne, puis comparez-la contre une chaîne minuscule: p>
au lieu d'utiliser plusieurs ifs
root code> déterminé par li>
- Une regex stocke le caractère correspondant dans un groupe de capture () Rappelable via
$ matchs [1] code>: li>
ul>
xxx pré> sortie d'échantillon: p> xxx pré> ps: strong> Le - Match code> Opérateur et l'instruction Switch sont par cas par défaut insensible insensible,
Pour changer ce comportement, utilisez -cmatch code> resp. Interrupteur avec le paramètre -Casesensible code>. p> p>
Utilisez l'opérateur -ilike code>
Je pense que vous avez une faute de frappe dans votre code ... Rroot vs Proot. Mais en fait, je ne peux pas reproduire votre problème. Cela fonctionne comme étant exprime pour moi. Si je ne me trompe pas, il doit être une correspondance exacte lorsque vous utilisez la méthode de la chaîne
.Contains () code>. Cela pourrait être plus facile ou plus pardonner i> lorsque vous utilisez un
-Match code>. Au moins c'est insensible à la cause. ;-)
En fait, mes chemins d'origine sont différents. J'ai modifié les chemins dans le fichier chemin.