j'en ai un String[]
String[] name = {"amit", "rahul", "surya"};
Je veux envoyer le nom en tant que paramètre dans la requête SQL à l'intérieur de la clause IN, alors comment puis-je convertir en un format
'amit','rahul','surya'
j'en ai un String[]
String[] name = {"amit", "rahul", "surya"};
Je veux envoyer le nom en tant que paramètre dans la requête SQL à l'intérieur de la clause IN, alors comment puis-je convertir en un format
'amit','rahul','surya'
Réponses:
if (name.length > 0) {
StringBuilder nameBuilder = new StringBuilder();
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 "";
}
String.join(...)ou TextUtils.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:
String joined = String.join(",", name);
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:
String[] name = {"amit", "rahul", "surya"};
TextUtils.join(",",name)
Sympa et simple: mais java8 requis!
String result = String.join(",", names);
StringBuilder sb = new StringBuilder();
for (String n : name) {
if (sb.length() > 0) sb.append(',');
sb.append("'").append(n).append("'");
}
return sb.toString();
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.StringUtilsAPI pour former un résultat séparé par des virgules à partir d'un tableau de chaînes en Java.
StringUtils.join(strArr,",");
Vous pouvez également le simplifier en utilisant la bibliothèque Guava:
String[] name = {"amit", "rahul", "surya"};
String str = "'" + Joiner.on(",").skipNulls().join(name)
.replace(",", "','") + "'";
"amit,rahul,surya":?
utilisez StringBuilderet itérez sur votre chaîne [], et ajoutez-y chaque chaîne:
public static String convert(String[] name) {
StringBuilder sb = new StringBuilder();
for (String st : name) {
sb.append('\'').append(st).append('\'').append(',');
}
if (name.length != 0) sb.deleteCharAt(sb.length()-1);
return sb.toString();
}
String[] name = {"amit", "rahul", "surya"};
public static String arrayToString(String array[])
{
if (array.length == 0) return "";
StringBuilder sb = new StringBuilder();
for (int i = 0; i < array.length; ++i)
{
sb.append(",'").append(array[i]).append("'");
}
return sb.substring(1);
}
substring(1), mais et si array.length == 0?
StringUtils.joinFonction USE : Par exemple
String myCsvString = StringUtils.join(myList, ",")
String[] paramIdIdList={"P001","P002","P003"};
StringBuilder builder = new StringBuilder();
for(String paramId : paramIdIdList) {
builder.append(paramId+",");
}
builder.deleteCharAt(builder.length() -1);
String paramIds = builder.toString();
System.Out.Println(paramIds );
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);
Deux lignes, vous avez terminé. :)
voici une méthode utilitaire pour diviser un tableau et mettre votre délimiteur personnalisé, en utilisant
String.replace(String,String)
Arrays.toString(Object[])
C'est ici :
public static String toString(String delimiter, Object[]array){
String s = "";
// split array
if (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
Extension pour la solution Java 8 antérieure
String result = String.join(",", name);
Si vous avez besoin d'un préfixe ou / et d'un suffixe pour les valeurs de tableau
StringJoiner joiner = new StringJoiner(",");
for (CharSequence cs: name) {
joiner.add("'" + cs + "'");
}
return joiner.toString();
Ou concept de méthode simple
public static String genInValues(String delimiter, String prefix, String suffix, String[] name) {
StringJoiner joiner = new StringJoiner(delimiter);
for (CharSequence cs: name) {
joiner.add(prefix + cs + suffix);
}
return joiner.toString();
}
Par exemple
For Oracle i need "id in (1,2,3,4,5)"
then use genInValues(",", "", "", name);
But for Postgres i need "id in (values (1),(2),(3),(4),(5))"
then use genInValues(",", "(", ")", name);
C'est mon être utile !!!
private static String convertArrayToString(String [] strArray) {
StringBuilder builder = new StringBuilder();
for(int i = 0; i<= strArray.length-1; i++) {
if(i == strArray.length-1) {
builder.append("'"+strArray[i]+"'");
}else {
builder.append("'"+strArray[i]+"'"+",");
}
}
return builder.toString();
}
String[] name = {"O'Neill"};