0
votes

PowerShell - Comment identifier via une variable, l'index de chaîne correspondant sur une matrice

$array = @('blue','red','purple','pink')
$array2 = @('brown','red','black','yellow')

$array | ForEach-Object {
    if ($array2 -contains $_) {
        Write-Host "`$array2 contains the `$array1 string [$_]"
    }
}
how to get the index of the match string?

0 commentaires

5 Réponses :


1
votes

ressemble à un exercice de devoirs pour moi. Dans tous les cas, comme mentionné, les choses sont beaucoup plus faciles si vous formatez votre code correctement. Il est également plus facile si vous nommez vos variables plutôt que de compter sur $ _ , car il change car il passe par une boucle imbriquée.

Il existe également d'autres moyens de le faire - voulez-vous que l'index nombre ou le contenu? J'ai supposé ce dernier xxx


0 commentaires

3
votes

tandis que -in -in / -Contains code> Les opérateurs code> vous permettent de tester pour confinement em> d'une valeur donnée dans une collection (valeur donnée est un élément de la collection), il y a aucun support direct pour obtenir l'index em> d'un élément em> en utilisant uniquement les fonctionnalités de PowerShell forts>.

pour .NET Les tableaux em> strong> (tels que ceux créés dans votre question [1] sup>) Vous pouvez utiliser leur .indexof () code> instance méthode / em> strong>, qui utilise comparaison sensible à la casse forte> basée sur la culture actuelle em>; EG: P>

$array = 'blue', 'ReD', 'yellow'
[Array]::FindIndex($array, [Predicate[string]] { 'red' -eq $args[0] }) # -> 1


0 commentaires

0
votes

Vous pouvez essayer quelque chose avec un compteur d'index que vous pouvez utiliser. Si $ array2.tolower () contient cet élément.TOBOWER (), puis boucle à travers ce second tableau pour savoir où se trouve cet élément.

Notez que cela ne fonctionnera pas pour une grande quantité de tableaux car il faudra le temps nécessaire pour passer de manière plus grande et plus grande. Mais, pour les petits échantillons comme celui-ci, cela fonctionne bien. xxx

s'il y a Duplicates dans le $ aray2 , vous obtiendrez deux lignes distinctes qui montrent chaque entrée d'index. xxx


0 commentaires

0
votes

Vous pouvez également faire un pour code> en boucle à l'aide d'un compteur d'index: xxx pré>

résultat: p>

$array2 contains the the string 'red' at index: 1
$array2 contains the the string 'black' at index: 2
$array2 contains the the string 'red' at index: 4


0 commentaires

0
votes
  1. Il s'agit d'un exemple pratique qui utilise BinarySearch et s'appuie sur votre réseau de recherche étant triée par la propriété "Intérêt".
  2. utilise iComparer pour forcer l'insensibilité à la casse XXX


0 commentaires