Convertir cadena a cadena separada por comas en java

Tengo una String[]

 String[] name = {"amit", "rahul", "surya"}; 

Quiero enviar el nombre como parámetro en la consulta sql dentro de la cláusula IN, ¿cómo puedo convertirlo a un formato?

 'amit','rahul','surya' 

 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 ""; } 

Escriba un método simple usted mismo, o use una de las diversas utilidades que existen.

Personalmente utilizo apache StringUtils ( StringUtils.join )

editar: en Java 8, ya no necesitas esto:

 String joined = String.join(",", name); 

Los desarrolladores de Android probablemente estén buscando TextUtils.join

Documentos de Android: http://developer.android.com/reference/android/text/TextUtils.html

Código:

 String[] name = {"amit", "rahul", "surya"}; TextUtils.join(",",name) 
 StringBuilder sb = new StringBuilder(); for (String n : name) { if (sb.length() > 0) sb.append(','); sb.append("'").append(n).append("'"); } return sb.toString(); 

También puede usar la API org.apache.commons.lang.StringUtils para formar un resultado separado por comas de la matriz de cadenas en Java.

StringUtils.join(strArr,",");

Agradable y simple: ¡pero se requiere java8!

Resultado de cadena = String.join (“,”, nombres);

Si ya tiene Spring Framework como dependencia, también puede usar el método util muy simple:

 org.springframework.util.StringUtils.arrayToCommaDelimitedString(String[] array) 

También puedes simplificarlo usando la biblioteca de Guava:

 String[] name = {"amit", "rahul", "surya"}; String str = "'" + Joiner.on(",").skipNulls().join(name) .replace(",", "','") + "'"; 

use StringBuilder e itere sobre su String [], y añada cada String en ella:

 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(); } 

Puedes hacer esto con una línea de código:

 Arrays.toString(strings).replaceAll("[\\[.\\].\\s+]", ""); 
 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); } 

yo uso esto

 public static String convertToCommaSeparated(String[] strings) { StringBuffer sb = new StringBuffer(""); for (int i = 0; strings != null && i < strings.length; i++) { sb.append(strings[i]); if (i < strings.length - 1) { sb.append(','); } } return sb.toString(); } 
 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 ); 

Por muy tentador y “genial” que pueda parecer el código, no use fold o reduce en grandes colecciones de cadenas, ya que éstas sufrirán el problema de concatenación de cadenas

 String[] strings = { "foo", "bar", "baz" }; Optional result = Arrays.stream(strings) .reduce((a, b) -> String.format("%s,%s", a, b)); System.out.println(result.get()); 

En cambio, según otras respuestas, use String.join() si ya tiene una colección, o un StringBuilder si no.

 String newNameList=null; for(int i = name.length;i>=0;i--){ if(newNameList==null){ newNameList = "\'" + name[name.length - i] + "\'"; } else{ newNameList += ",\'" + name[name.length - i] + "\'"; } } 

Es posible que también desee no engendrar StringBuilder para una operación tan simple. Tenga en cuenta que he cambiado el nombre de su matriz de nombre a nombre en aras de la conformidad del contenido:

 String[] names = {"amit", "rahul", "surya"}; String namesString = ""; int delimeters = (names.size() - 1); for (String name : names) namesString += (delimeters-- > 0) ? "'" + name + "'," : "'" + name + "'"; 

Dos líneas (excluyendo declaraciones; ‘finalstring’ deben declararse inicialmente iguales a una cadena vacía), si no le importa mucho el espaciado vertical del bucle for ():

 for (int i = 0; i 

Dos líneas, ya terminaste. 🙂

Aquí hay un método de utilidad para dividir una matriz y poner su delimitador personalizado, utilizando

 String.replace(String,String) Arrays.toString(Object[]) 

aquí está :

 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; } 

cambiar el segundo tipo de argumento para adaptarse a su tipo de matriz

Esta sería una forma optimizada de hacerlo

 StringBuilder sb = new StringBuilder(); for (String n : arr) { sb.append("'").append(n).append("',"); } if(sb.length()>0) sb.setLength(sbDiscrep.length()-1); return sb.toString(); 

UTILIZAR la función StringUtils.join : Ej.

 String myCsvString = StringUtils.join(myList, ",")