2010-10-19 10 views
4

HI tous J'ai un problème en essayant de convertir la chaîne de collecte de liste en une chaîne de caractères. Mais pour chaque article, je dois éditer avec un format spécifique.Écrit la collection de listes de codes à la chaîne dans C#

Exemple

List<string> items = new List<string>(); 
string result = string.Empty; 

items.Add("First"); 
items.Add("Second"); 
items.Add("Last"); 

result = string.Join(",", items.ToArray()); 
Console.WriteLine(result); // Display: First,Second,Last 

Mais je veux convertir en quelque chose comme ceci:

[First],[Second],[Last] 

ou quelque chose comme

--First-,--Second-,--Last- 

Je sais qu'il ya peu technique pour écrire ce code en utilisant foreach pour la boucle.

Mais pourrait-il écrire du code juste changer tous les éléments de la collection de la liste en chaîne de modèle spécifique. Par conséquent, la chaîne de collections d'éléments contient comme "First" à "\ First /", ou "Last" à "Last".

Regard

+0

Pourriez-vous reformuler la question? Je l'ai lu à quelques reprises, et je ne suis toujours pas sûr de savoir quel est le problème. – Neowizard

+1

Vous pouvez construire une collection de chaînes avec une liste d'initialisation (bien que cela puisse ne pas correspondre à votre scénario): 'var items = new Liste () {" One "," Two "," Three ",};'. Vous n'avez plus besoin de convertir en tableau pour utiliser 'string.Join'. Il a maintenant un override avec cette signature: 'Public static string Join (séparateur de chaînes, valeurs IEnumerable );' –

Répondre

10

On dirait que vous voulez une projection avant d'utiliser JOIN:

result = string.Join(",", items.Select(x => "[" + x + "]") 
           .ToArray()); 

Personnellement, je pense que c'est plus clair que l'exécution d'une se joindre à un delimiter plus compliqué. Il se sent comme vous avez bien des articles de [First], et [Third] reliés par des virgules - plutôt que des éléments de First, Second et Third rejoint par ],[.

Votre deuxième forme est tout aussi facile à réaliser:

result = string.Join(",", items.Select(x => "--" + x + "-") 
           .ToArray()); 

Notez que vous n'avez pas besoin de ToArray appel si vous utilisez .NET 4, comme il est introduit de plus pour rendre les surcharges string.Join plus facile de travailler avec.

+0

Oui, ce code que je cherche, plus élégant pour l'écrire. THX. –

3

Pourquoi ne pas

var result = "--" + string.Join("-,--", items.ToArray()) + "--"; 

ou

var result = "[" + string.Join("],[", items.ToArray()) + "]"; 
2

Utilisez rejoindre, puis ajouter des caractères devant et après, au besoin:

result = "[" + string.Join("],[", items.ToArray()) + "]"; 

vous obtiendrez

[First],[Second],[Last]