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"";}
Então eu teria escrito um monte de cheques. Estou apenas explicando o conceito, não dando o exemplo de salvar tudo.
Nico Huysamen
3
Novamente, conceitos ... E obrigado pelo voto negativo. Mas aí está, consertou.
Nico Huysamen
obrigado amigo você salva meu dia, mas se você não se importa, você também pode dar a resposta de @Bart Kiers porque eu posso entender essa situação e eu sou novo em programação plz
Deepak Kumar
7
Ohhh, por que é necessário escrever tantas linhas de origem se você pode simplesmente usar String.join(...)ou TextUtils.join(...)?
Eugene Brusov
2
@EugeneBrusov Vou tentar adivinhar porque a resposta postada em 2011 muito antes do lançamento do Java 8;)
Nico Huysamen
211
Escreva um método simples você mesmo ou use um dos vários utilitários por aí.
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);}
Adicione uma descrição do que seu código está fazendo exatamente.
Hille
Convertendo String [] em string separada por vírgulas
Vinayak
Em sua resposta, porque certo sabe que existe algum código. Nada mais e nada menos, mas não ajuda.
Hille
1
Por mais tentador e "legal" que o código possa parecer, não use foldoureduce em grandes coleções de strings, pois estas sofrerão com o problema de concatenação de strings
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());
Em vez disso, como para outras respostas, use String.join()se você já tiver uma coleção, ou StringBuilderse não tiver.
Você também pode querer não gerar StringBuilder para uma operação tão simples. Observe que alterei o nome da sua matriz de nome para nomes por uma questão de conformidade do conteúdo:
String[] names ={"amit","rahul","surya"};String namesString ="";int delimeters =(names.size()-1);for(String name : names)
namesString +=(delimeters-->0)?"'"+ name +"',":"'"+ name +"'";
Duas linhas (excluindo as declarações; 'finalstring' deve ser inicialmente declarada igual a uma string vazia), se você não se importar muito com o espaçamento vertical do loop 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;}
mude o segundo tipo de argumento para se adequar ao seu tipo de array
String[] name = {"O'Neill"};
Respostas:
fonte
String.join(...)
ouTextUtils.join(...)
?Escreva um método simples você mesmo ou use um dos vários utilitários por aí.
Pessoalmente, eu uso o apache StringUtils ( StringUtils.join )
editar: no Java 8, você não precisa mais disso:
fonte
StringUtils.join(names,',');
String list = "'" + StringUtils.join(names,"','") + "'";
isso forneceria as aspas simples necessárias para a solicitação SQL.TextUtils.join(",", stringArrayOfEmails)
Os desenvolvedores Android provavelmente estão procurando por TextUtils.join
Documentos Android: http://developer.android.com/reference/android/text/TextUtils.html
Código:
fonte
Bom e simples: mas requer java8!
fonte
fonte
TextUtils.join(...)
? Acho que um código de linha é ainda melhor e mais simples do que cinco.Você também pode usar a
org.apache.commons.lang.StringUtils
API para formar um resultado separado por vírgula da matriz de string em Java.StringUtils.join(strArr,",");
fonte
Se você já tem Spring Framework como dependência, também pode usar o método util muito simples:
fonte
Você também pode simplificar usando a biblioteca Guava:
fonte
"amit,rahul,surya"
:?use
StringBuilder
e itere sobre sua String [] e anexe cada String nela:fonte
Você pode fazer isso com uma linha de código:
fonte
fonte
substring(1)
, mas e searray.length == 0
?Eu uso isso
fonte
StringUtils.join
Função USE : Ex.fonte
fonte
Por mais tentador e "legal" que o código possa parecer, não use
fold
oureduce
em grandes coleções de strings, pois estas sofrerão com o problema de concatenação de stringsEm vez disso, como para outras respostas, use
String.join()
se você já tiver uma coleção, ouStringBuilder
se não tiver.fonte
fonte
Você também pode querer não gerar StringBuilder para uma operação tão simples. Observe que alterei o nome da sua matriz de nome para nomes por uma questão de conformidade do conteúdo:
fonte
Duas linhas (excluindo as declarações; 'finalstring' deve ser inicialmente declarada igual a uma string vazia), se você não se importar muito com o espaçamento vertical do loop for ():
Duas linhas, está feito. :)
fonte
aqui está um método utilitário para dividir uma matriz e colocar seu delimitador personalizado, usando
Aqui está :
mude o segundo tipo de argumento para se adequar ao seu tipo de array
fonte
Esta seria uma maneira otimizada de fazer isso
fonte
Extensão para solução anterior Java 8
Se você precisar de um prefixo ou / e sufixo para valores de matriz
Ou conceito de método simples
Por exemplo
fonte
Isso pode ser útil !!!
fonte