2009-05-29 8 views
0

Je veux obtenir toutes les valeurs d'une interface en une seule fois sous la forme d'une chaîne séparée par des virgules.Comment obtenir des données de Set en une fois

Par exemple (langage Java):

Set<String> fruits= new HashSet<String>(); 

fruits.add("Apple"); 
fruits.add("Banana"); 
fruits.add("Orange"); 

Si j'imprimer l'ensemble comme fruits.toString alors la sortie serait:

[Apple, Banana, Orange] 

Mais mon exigence est Apple, Banana, Orange sans les crochets.

+0

devoirs? Vous pouvez essayer d'utiliser la chaîne substring() sur le résultat de toString(). Une meilleure façon serait d'itérer sur le Set et de concaténer chaque élément de la liste avec un StringBuilder. –

+0

Lorsque vous posez des questions, veuillez spécifier la langue et en faire une partie de l'étiquette. – shahkalpesh

+0

Quelqu'un peut-il ajouter un tag 'VB' à cela? Ou VBScript, quel qu'il soit. – ChristianLinnell

Répondre

3

Je suppose que cela est Java.

L'approche toString().substring rapide et sale de MartinodF fonctionnera, mais ce que vous cherchez vraiment, c'est une méthode join. Si vous faites beaucoup de manipulation de chaînes, je vous suggère de jeter un oeil à la bibliothèque Apache CommonsLang. Il offre beaucoup de fonctionnalités utiles qui manquent dans la bibliothèque standard Java, y compris une classe StringUtils qui vous permettra de le faire:

Set fruits = new HashSet(); 

fruits.add("Apple"); 
fruits.add("Banana"); 
fruits.add("Orange"); 

String allFruits = StringUtils.join(fruits, ", "); 
// allFruits is now "Apple, Banana, Orange" 
+0

Pas une mauvaise idée, mais pour le code ci-dessus, je dois utiliser le fichier commons-lang.jar qui n'est pas acceptable dans mon cas. –

+0

pourquoi est-ce inacceptable? – Salandur

+0

Parce que c'est les devoirs et qu'il devrait se débrouiller seul? –

1

rapide et sale:

value.toString().substring(1, value.toString().length - 1); 
+0

Merci pour votre réponse :) –

+0

Oui, je ne vois aucune raison que cela échouerait. Il serait beaucoup plus propre de parcourir l'ensemble, créant la corde au fur et à mesure, mais c'est assez bon. – ChristianLinnell

+0

N'appelez pas au moins deux fois à la chaîne. –

1

En supposant C# 3,5

var fruits = new HashSet<string>(); 

fruits.Add("Apple"); 
fruits.Add("Banana"); 
fruits.Add("Orange"); 

Console.WriteLine(string.Join(", ",fruits.ToArray())); 
0

Utilisez StringUtils.join des Communes lang

Set fruits = new HashSet(); 

fruits.add("Apple"); 
fruits.add("Banana"); 
fruits.add("Orange"); 


System.out.println(StringUtils.join(fruits, ',')); 
Questions connexes