2016-06-24 3 views
1

Je suivant tableau de chaînes, et je suis obtenir sa forme de chaîne dans foreach bouclesauter plusieurs valeurs en boucle foreach

string[] words = ... 

foreach (String W in words.Skip(1)) 
{ 
     ... 
} 

Je peux sauter première valeur, mais comment puis-je ignorer 1ère valeur et dernière valeur à la fois?

+0

'startswith/EndsWith' serait mon premier choix .. – MethodMan

Répondre

2

Essayez cette

foreach (string w in words.Skip(1).Take(words.length-2)) 
{ 
    ... 
} 

Probablement préférable de mettre quelques tests avant cela pour s'assurer qu'il y a assez de mots!

6

Utilisez cette

words.Skip(1).Take(words.Length-2) 

Il est de -2 pour que vous ne comptez pas celui que vous avez sauté, plus celui que vous voulez sauter de la fin

1
int count = 0; 
string[] words = { }; 

foreach (string w in words) 
{ 
     if(count == 0 || count == (words.Length - 1)){ 
     continue; 
     } 
     //Your code goes here 
     count++; 
} 

Cela devrait fonctionner pour vous si vous devez utiliser une boucle foreach.

+1

vous devriez vérifier pour' words.Length - 1' – dotctor

11

C'est un tableau à droite ...

for (int i = 1; i < words.Length - 1; i++) 
{ 
    string W = words[i]; 
    //... 
} 
+2

LOL, enfin une réponse normale +1 –

+0

Même si je suis d'accord que cela devrait être la meilleure réponse, je pense qu'il demandait comment faire ça sur linq. Quoi qu'il en soit, voici mon upvote –

+0

'foreach' a été mentionné dans le titre de la question, mais comme nous n'allons pas plus de" chacun ", je pensais que j'ignorerais ça, maintenant vous le mentionnez je vois la balise linq. –

1

Vous pouvez utiliser ArraySegment

var clipped = new ArraySegment<String>(words, 1, words.Length-2); 

foreach (String W in clipped) 
{ 
     ... 
}