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"";}
Entonces habría escrito un montón de cheques. Solo estoy explicando el concepto, no dando el ejemplo de guardar todo.
Nico Huysamen
3
De nuevo, conceptos ... Y gracias por el voto negativo. Pero ahí lo tienes, lo arregló.
Nico Huysamen
gracias amigo, me salvas el día, pero si no te importa, también puedes dar la respuesta de @Bart Kiers porque podría tener esa situación y soy nuevo en la programación por favor
Deepak Kumar
7
Ohhh, ¿por qué es necesario escribir tantas líneas fuente si simplemente puedes usar String.join(...)o TextUtils.join(...)?
Eugene Brusov
2
@EugeneBrusov Voy a ir y adivinar porque la respuesta se publicó en 2011 mucho antes del lanzamiento de Java 8;)
Nico Huysamen
211
Escriba un método simple usted mismo o use una de las diversas utilidades que existen.
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);}
Agregue una descripción de lo que hace exactamente su código.
Hille
Conversión de cadena [] en cadena separada por comas
Vinayak
En su respuesta, porque la derecha sabe que hay algún código. Nada más y nada menos, pero no ayuda.
Hille
1
Por muy tentador y "genial" que pueda parecer el código, no utilice foldoreduce en grandes colecciones de cadenas, ya que estas sufrirán el problema de concatenación de cadenas.
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());
En cambio, según otras respuestas, use String.join()si ya tiene una colección, o StringBuildersi no.
Es posible que también desee no generar StringBuilder para una operación tan simple. Tenga en cuenta que he cambiado el nombre de su matriz de nombre a nombres 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 (excluidas las declaraciones; 'finalstring' debe declararse inicialmente igual a una cadena vacía), si no le importa mucho el espaciado vertical del bucle 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;}
cambie el segundo tipo de argumento para adaptarse a su tipo de matriz
String[] name = {"O'Neill"};
Respuestas:
fuente
String.join(...)
oTextUtils.join(...)
?Escriba un método simple usted mismo o use una de las diversas utilidades que existen.
Personalmente uso apache StringUtils ( StringUtils.join )
editar: en Java 8, ya no necesitas esto en absoluto:
fuente
StringUtils.join(names,',');
String list = "'" + StringUtils.join(names,"','") + "'";
esto le daría las comillas simples necesarias para la solicitud SQL.TextUtils.join(",", stringArrayOfEmails)
Los desarrolladores de Android probablemente estén buscando TextUtils.join
Documentos de Android: http://developer.android.com/reference/android/text/TextUtils.html
Código:
fuente
Agradable y simple: ¡pero se requiere java8!
fuente
fuente
TextUtils.join(...)
? Supongo que un código de línea es incluso mejor y más simple que cinco.También puede usar
org.apache.commons.lang.StringUtils
API para formar un resultado separado por comas de una matriz de cadenas en Java.StringUtils.join(strArr,",");
fuente
Si ya tiene Spring Framework como dependencia, también puede usar el método util muy simple:
fuente
También puede simplificarlo usando la biblioteca de Guava:
fuente
"amit,rahul,surya"
:?use
StringBuilder
e itere sobre su String [], y agregue cada String en él:fuente
Puede hacer esto con una línea de código:
fuente
fuente
substring(1)
, pero ¿y siarray.length == 0
?yo uso esto
fuente
StringUtils.join
Función USE : Ej.fuente
fuente
Por muy tentador y "genial" que pueda parecer el código, no utilice
fold
oreduce
en grandes colecciones de cadenas, ya que estas sufrirán el problema de concatenación de cadenas.En cambio, según otras respuestas, use
String.join()
si ya tiene una colección, oStringBuilder
si no.fuente
fuente
Es posible que también desee no generar StringBuilder para una operación tan simple. Tenga en cuenta que he cambiado el nombre de su matriz de nombre a nombres en aras de la conformidad del contenido:
fuente
Dos líneas (excluidas las declaraciones; 'finalstring' debe declararse inicialmente igual a una cadena vacía), si no le importa mucho el espaciado vertical del bucle for ():
Dos líneas, ya está. :)
fuente
aquí hay un método de utilidad para dividir una matriz y poner su delimitador personalizado, usando
aquí está :
cambie el segundo tipo de argumento para adaptarse a su tipo de matriz
fuente
Esta sería una forma optimizada de hacerlo.
fuente
Extensión para la solución Java 8 anterior
Si necesita prefijo o / y sufijo para valores de matriz
O concepto de método simple
Por ejemplo
fuente
¡Esto puede ser útil!
fuente