0
votes

Trouver une sous-chaîne dans la chaîne avec Slash avant dans les scripts PowerShell

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 contient code> renvoie false lorsque la sous-chaîne est sroot code> ou Troot code>.

suivi est mon code d'exemple. p>

$/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


2 commentaires

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 () . Cela pourrait être plus facile ou plus pardonner lorsque vous utilisez un -Match . 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.


3 Réponses :


0
votes

J'ai essayé votre code et cela fonctionne comme prévu (modifié $ line.contains ('orthot') à $ line.contains ("proot" ) L'exemple d'entrée).

Je pense que vous pourriez avoir du mal à un problème sensible à la casse. Je vous suggère d'essayer d'appliquer la fonction tolower () à la chaîne, puis comparez-la contre une chaîne minuscule: xxx


0 commentaires

2
votes

au lieu d'utiliser plusieurs ifs

  • Vous pouvez utiliser un commutateur contrôlé par la lettre devant root déterminé par
  • Une regex stocke le caractère correspondant dans un groupe de capture () Rappelable via $ matchs [1] :
    xxx

    sortie d'échantillon: xxx

    ps: Le - Match Opérateur et l'instruction Switch sont par cas par défaut insensible insensible,
    Pour changer ce comportement, utilisez -cmatch resp. Interrupteur avec le paramètre -Casesensible .


0 commentaires

0
votes

Utilisez l'opérateur -ilike xxx


0 commentaires