if(name.length >0){StringBuilder nameBuilder =newStringBuilder();for(String n : name){
nameBuilder.append("'").append(n.replace("'","\\'")).append("',");// can also do the following// nameBuilder.append("'").append(n.replace("'", "''")).append("',");}
nameBuilder.deleteCharAt(nameBuilder.length()-1);return nameBuilder.toString();}else{return"";}
Ensuite, j'aurais fait un tas de chèques. J'explique simplement le concept, sans donner l'exemple de sauvegarde de tout.
Nico Huysamen
3
Encore une fois, les concepts ... Et merci pour le vote défavorable. Mais là vous allez, réparé.
Nico Huysamen
merci mon pote, vous me sauvez la journée, mais si cela ne vous dérange pas, pouvez-vous également donner la réponse de @Bart Kiers car je pourrais avoir cette situation et je suis nouveau dans la programmation plz
Deepak Kumar
7
Ohhh, pourquoi il est nécessaire d'écrire autant de lignes source si vous pouvez simplement utiliser String.join(...)ou TextUtils.join(...)?
Eugene Brusov
2
@EugeneBrusov Je vais aller deviner car la réponse postée en 2011 bien avant la sortie de Java 8;)
Nico Huysamen
211
Écrivez vous-même une méthode simple ou utilisez l'un des divers utilitaires disponibles.
@Bmoeller Avez-vous essayé TextUtils.join(...)? Je suppose que le code d'une ligne est encore meilleur et plus simple que cinq autres.
Eugene Brusov
27
Vous pouvez également utiliser l' org.apache.commons.lang.StringUtilsAPI pour former un résultat séparé par des virgules à partir d'un tableau de chaînes en Java.
String[] name ={"amit","rahul","surya"};publicstaticString arrayToString(String array[]){if(array.length ==0)return"";StringBuilder sb =newStringBuilder();for(int i =0; i < array.length;++i){
sb.append(",'").append(array[i]).append("'");}return sb.substring(1);}
Veuillez ajouter une description de ce que fait exactement votre code.
Hille
Conversion de la chaîne [] en chaîne séparée par des virgules
Vinayak
Dans votre réponse, parce que le droit sait qu'il y a du code. Rien de plus et rien de moins, mais ce n'est pas utile.
Hille
1
Aussi tentant et «cool» que le code puisse paraître, ne pas utiliser foldoureduce sur de grandes collections de chaînes, car elles souffriront du problème de concaténation de chaînes
String[] strings ={"foo","bar","baz"};Optional<String> result =Arrays.stream(strings).reduce((a, b)->String.format("%s,%s", a, b));System.out.println(result.get());
Au lieu de cela, comme pour les autres réponses, utilisez String.join()si vous avez déjà une collection, ou StringBuildersi non.
Vous pouvez également ne pas générer StringBuilder pour une opération aussi simple. Veuillez noter que j'ai changé le nom de votre tableau de nom en noms par souci de conformité du contenu:
String[] names ={"amit","rahul","surya"};String namesString ="";int delimeters =(names.size()-1);for(String name : names)
namesString +=(delimeters-->0)?"'"+ name +"',":"'"+ name +"'";
Deux lignes (à l'exclusion des déclarations; 'finalstring' doit être initialement déclaré égal à une chaîne vide), si vous ne vous souciez pas beaucoup de l'espacement vertical de la boucle for ():
for(int i =0; i<string_array.length; i++){finalstring += string_array[i]+",";}
finalstring = finalstring.substring(0,finalstring.length()-1);
publicstaticString toString(String delimiter,Object[]array){String s ="";// split arrayif(array !=null&& array.length >0){
s =Arrays.toString(array).replace("[","").replace("]","");}// place delimiter (notice the space in ", ")if(delimiter !=null){
s = s.replace(", ", delimiter);}return s;}
changez le deuxième type d'argument pour convenir à votre type de tableau
String[] name = {"O'Neill"};
Réponses:
la source
String.join(...)
ouTextUtils.join(...)
?Écrivez vous-même une méthode simple ou utilisez l'un des divers utilitaires disponibles.
Personnellement, j'utilise apache StringUtils ( StringUtils.join )
edit: en Java 8, vous n'en avez plus besoin du tout:
la source
StringUtils.join(names,',');
String list = "'" + StringUtils.join(names,"','") + "'";
cela vous donnerait les guillemets simples nécessaires à la requête SQL.TextUtils.join(",", stringArrayOfEmails)
Les développeurs Android recherchent probablement TextUtils.join
Documents Android: http://developer.android.com/reference/android/text/TextUtils.html
Code:
la source
Sympa et simple: mais java8 requis!
la source
la source
TextUtils.join(...)
? Je suppose que le code d'une ligne est encore meilleur et plus simple que cinq autres.Vous pouvez également utiliser l'
org.apache.commons.lang.StringUtils
API pour former un résultat séparé par des virgules à partir d'un tableau de chaînes en Java.StringUtils.join(strArr,",");
la source
Si vous avez déjà Spring Framework en tant que dépendance, vous pouvez également utiliser la méthode util très simple:
la source
Vous pouvez également le simplifier en utilisant la bibliothèque Guava:
la source
"amit,rahul,surya"
:?utilisez
StringBuilder
et itérez sur votre chaîne [], et ajoutez-y chaque chaîne:la source
Vous pouvez le faire avec une seule ligne de code:
la source
la source
substring(1)
, mais et siarray.length == 0
?j'utilise ça
la source
StringUtils.join
Fonction USE : Par exemplela source
la source
Aussi tentant et «cool» que le code puisse paraître, ne pas utiliser
fold
oureduce
sur de grandes collections de chaînes, car elles souffriront du problème de concaténation de chaînesAu lieu de cela, comme pour les autres réponses, utilisez
String.join()
si vous avez déjà une collection, ouStringBuilder
si non.la source
la source
Vous pouvez également ne pas générer StringBuilder pour une opération aussi simple. Veuillez noter que j'ai changé le nom de votre tableau de nom en noms par souci de conformité du contenu:
la source
Deux lignes (à l'exclusion des déclarations; 'finalstring' doit être initialement déclaré égal à une chaîne vide), si vous ne vous souciez pas beaucoup de l'espacement vertical de la boucle for ():
Deux lignes, vous avez terminé. :)
la source
voici une méthode utilitaire pour diviser un tableau et mettre votre délimiteur personnalisé, en utilisant
C'est ici :
changez le deuxième type d'argument pour convenir à votre type de tableau
la source
Ce serait une façon optimisée de le faire
la source
Extension pour la solution Java 8 antérieure
Si vous avez besoin d'un préfixe ou / et d'un suffixe pour les valeurs de tableau
Ou concept de méthode simple
Par exemple
la source
C'est mon être utile !!!
la source