2014-05-10 2 views
1

Je veux la deuxième valeur de chaque ligne. Exemple:C# charger les données du fichier txt dans la liste déroulante et obtenir la deuxième valeur

Joshua,Kind,12 
John,Amazing,85 
Farrah,Smart,81 

et zone de liste déroulante affiche volonté

- Kind 
- Amazing 
- Smart 

Mon code:

string[] lineOfContents = File.ReadAllLines(@"C:\Users\1\Desktop\2.txt"); 
    foreach (var line in lineOfContents) 
    { 
     string[] tokens = line.Split(','); 
     comboBox1.Items.Add(tokens[0]); 
    } 

Je reçois la première valeur. Donc, j'essaye celui-ci:

string[] tokens = line.Split(',')[1]; 

Mais je reçois une erreur. Comment puis-je afficher la deuxième valeur de chaque ligne dans la liste déroulante? Merci!

Répondre

0

ne changent pas (il est correct):

string[] tokens = line.Split(','); 

changer simplement:

comboBox1.Items.Add(tokens[0]); 

à (changer de 0 à 1, de sorte que vous obtenez le 2ème élément plutôt que le 1er):

comboBox1.Items.Add(tokens[1]); 

code complet:

string[] lineOfContents = File.ReadAllLines(@"C:\Users\1\Desktop\2.txt"); 
foreach (var line in lineOfContents) 
{ 
    string[] tokens = line.Split(','); 
    // get the 2nd element (the 1st item is always item 0) 
    comboBox1.Items.Add(tokens[1]); 
} 
3

directement en utilisant l'indexeur sur la valeur de retour de Split signifie que le résultat est plus un tableau, mais directement une chaîne

Vous pouvez écrire

string token = line.Split(',')[1]; 

ou

comboBox1.Items.Add(line.Split(',')[1]); 

Cependant ce code est très dangereux. Que se passe-t-il si, pour une raison quelconque, une ligne de votre fichier texte ne peut pas être correctement divisée en 3 parties? Je préférerais être en sécurité et protéger la boucle de non souhaitée à des exceptions gamme avec ce

string[] lineOfContents = File.ReadAllLines(@"C:\Users\1\Desktop\2.txt"); 
foreach (var line in lineOfContents) 
{ 
    string[] tokens = line.Split(','); 
    if(tokens.Length >= 2) 
     comboBox1.Items.Add(tokens[1]); 
} 
+0

+1 pour les gardes de code. –

+0

La règle n ° 1 ne fait jamais confiance à vos entrées. – Steve

+0

Merci! Ça marche. :) – user2651946

0

Il suffit de changer cette ligne:

comboBox1.Items.Add(tokens[0]); 

à ceci:

comboBox1.Items.Add(tokens[1]); 

que parce que votre tableau de jetons contient trois éléments après split (aux index 0, 1, 2);

Si vous souhaitez utiliser la deuxième approche:

changer simplement: string[] tokens = line.Split(',')[1];-string tokens = line.Split(',')[1];

lors de l'utilisation indexeur directement juste valeur est retournée pas un tableau.

0

la question est que vous devez changer

chaîne

[] = jetons ligne.Split (',') [1];

avec

jetons de chaîne = line.split ('') [1];

que vous lisez un seul élément (le second)

Vive.

Questions connexes