2011-11-10 6 views
0

J'ai un tableau de lettres de lecteur et j'ai besoin d'ajouter deux points à chaque lettre, puis de passer le tableau à une autre fonction. Puis-je le faire ou dois-je créer un nouveau tableau? Ou peut-être pas un tableau du tout mais une sorte de liste à la place?Modifier les éléments du tableau

string source = "C|D|E"; 
string[] sourcearray = source.Split('|'); 
foreach (string driveletter in sourcearray) 
{ 
    //need to append ":" to each drive letter 
} 

EDIT: Il y a des moments où le tableau source pourrait se terminer par un tuyau:

string source = "C|D|E|"; 

Lorsque cela se produit le dernier élément du tableau sera un colon si j'utilise une commune boucle, et je ne peux pas avoir ça. Comment mieux gérer cela? Lorsque cela se produit, le tableau final doit ressembler à:

C: D: E: 

Merci.

+0

pour l'édition: Vous pouvez dire la fonction Split ignorer les valeurs vides. Vérifiez les surcharges de fonction. – GeirGrusom

Répondre

3

Les chaînes sont immuables, donc vous ne pouvez pas changer l'instance de chaîne, mais vous devez modifier les emplacements de tableau avec de nouvelles chaînes:

string source = "C|D|E"; 
string[] sourcearray = source.Split(new []{'|'}, StringSplitOptions.RemoveEmptyEntries); 
for(int i=0; i < sourcearray.Length; i++) 
{ 
    sourcearray[i] = sourcearray[i] + ":"; 
} 
+0

Merci. Editer la question pour un cas particulier. –

+0

@SixHouse: vous pouvez utiliser une surcharge de Split pour ignorer les entrées vides, vérifiez ma modification. – digEmAll

2

Remplacez votre boucle for avec

string[] resultArray = sourcearray.Select(s => s + ":").ToArray(); 

Re Edit:

string source = "C|D|E|"; 

La solution est ici mieux à cette question est une variante particulière de la méthode string.Split(). Malheureusement, que l'on exige un tableau de caractères de séparation, donc nous obtenons:

sourceArray = source.Split(new char[] {'|'}, 
      StringSplitOptions.RemoveEmptyEntries); 
+1

Ce gars est clairement très nouveau pour C#, je ne suis pas sûr que Lambda Expressions soit une solution appropriée ... –

+2

@KristianFenn: C'est pourquoi il doit être dit quelque chose à propos de Lambda Expressions. –

1
for (var i = 0; i < sourcearray.Length; i++) 
{ 
    sourceArray[i] += ":"; 
} 
0
string[] sourcearray = source.Split('|').Select(s => s + ":").ToArray(); 
0
var newArray = source.Split('|').Select(s => s + ":").ToArray(); 
Questions connexes