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"";}
Dann hätte ich ein paar Schecks ausgestellt. Ich erkläre nur das Konzept und gebe nicht das Beispiel "Alles speichern".
Nico Huysamen
3
Nochmals Konzepte ... Und danke für die Ablehnung. Aber los geht's, behoben.
Nico Huysamen
danke Kumpel, du rettest meinen Tag, aber wenn es dir nichts ausmacht, kannst du auch die Antwort von @Bart Kiers geben, weil ich diese Situation bekommen könnte und ich neu in der Programmierung von PLZ bin
Deepak Kumar
7
Ohhh, warum müssen so viele Quellzeilen geschrieben werden, wenn Sie einfach String.join(...)oder verwenden können TextUtils.join(...)?
Eugene Brusov
2
@ EugeneBrusov Ich werde gehen und raten, weil die Antwort im Jahr 2011 lange vor der Veröffentlichung von Java 8 veröffentlicht wurde;)
Nico Huysamen
210
Schreiben Sie entweder selbst eine einfache Methode oder verwenden Sie eines der verschiedenen Dienstprogramme.
Genau! Sie können sogar Ihre eigenen Begrenzer definieren:StringUtils.join(names,',');
Wahnsinn
5
String list = "'" + StringUtils.join(names,"','") + "'";Dies würde Ihnen die einfachen Anführungszeichen geben, die von der SQL-Anforderung benötigt werden.
Hayclark
Für Android:TextUtils.join(",", stringArrayOfEmails)
Pratik Butani
82
Android-Entwickler suchen wahrscheinlich nach TextUtils.join
@Bmoeller Hast du es versucht TextUtils.join(...)? Ich denke, ein Zeilencode ist noch besser und einfacher als fünf.
Eugene Brusov
27
Sie können die org.apache.commons.lang.StringUtilsAPI auch verwenden , um ein durch Kommas getrenntes Ergebnis vom Zeichenfolgenarray in Java zu bilden.
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);}
Bitte fügen Sie eine Beschreibung hinzu, was Ihr Code genau tut.
Hille
Konvertieren von String [] in einen durch Kommas getrennten String
Vinayak
In Ihrer Antwort, weil richtig weiß, dass es einen Code gibt. Nicht mehr und nicht weniger, aber es ist keine Hilfe.
Hille
1
So verlockend und „cool“ , wie der Code angezeigt werden, nicht verwenden foldoderreduce auf große Sammlungen von Zeichenketten, da diese aus dem leiden String - Verkettung Problem
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());
Verwenden String.join()Sie stattdessen gemäß anderen Antworten, wenn Sie bereits eine Sammlung haben, oder eine, StringBuilderwenn nicht.
Möglicherweise möchten Sie StringBuilder auch nicht für eine so einfache Operation erzeugen. Bitte beachten Sie, dass ich den Namen Ihres Arrays aus Gründen der Inhaltskonformität von Name in Namen geändert habe :
String[] names ={"amit","rahul","surya"};String namesString ="";int delimeters =(names.size()-1);for(String name : names)
namesString +=(delimeters-->0)?"'"+ name +"',":"'"+ name +"'";
Zwei Zeilen (ohne Deklarationen; 'finalstring' sollte anfangs gleich einer leeren Zeichenfolge deklariert werden), wenn Sie nicht viel Wert auf den vertikalen Abstand der for () -Schleife legen:
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;}
Ändern Sie den zweiten Argumenttyp entsprechend Ihrem Array-Typ
String[] name = {"O'Neill"};
Antworten:
quelle
String.join(...)
oder verwenden könnenTextUtils.join(...)
?Schreiben Sie entweder selbst eine einfache Methode oder verwenden Sie eines der verschiedenen Dienstprogramme.
Persönlich benutze ich Apache StringUtils ( StringUtils.join )
edit: in Java 8 brauchst du das überhaupt nicht mehr:
quelle
StringUtils.join(names,',');
String list = "'" + StringUtils.join(names,"','") + "'";
Dies würde Ihnen die einfachen Anführungszeichen geben, die von der SQL-Anforderung benötigt werden.TextUtils.join(",", stringArrayOfEmails)
Android-Entwickler suchen wahrscheinlich nach TextUtils.join
Android-Dokumente: http://developer.android.com/reference/android/text/TextUtils.html
Code:
quelle
Schön und einfach: aber Java8 erforderlich!
quelle
quelle
TextUtils.join(...)
? Ich denke, ein Zeilencode ist noch besser und einfacher als fünf.Sie können die
org.apache.commons.lang.StringUtils
API auch verwenden , um ein durch Kommas getrenntes Ergebnis vom Zeichenfolgenarray in Java zu bilden.StringUtils.join(strArr,",");
quelle
Wenn Sie Spring Framework bereits als Abhängigkeit haben, können Sie auch die sehr einfache util-Methode verwenden:
quelle
Sie können es auch mithilfe der Guava-Bibliothek vereinfachen:
quelle
"amit,rahul,surya"
?Verwenden
StringBuilder
und iterieren Sie Ihren String [] und hängen Sie jeden String an:quelle
Sie können dies mit einer Codezeile tun:
quelle
quelle
substring(1)
, aber was wäre wennarray.length == 0
?ich benutze das
quelle
USE-
StringUtils.join
Funktion: ZBquelle
quelle
So verlockend und „cool“ , wie der Code angezeigt werden, nicht verwenden
fold
oderreduce
auf große Sammlungen von Zeichenketten, da diese aus dem leiden String - Verkettung ProblemVerwenden
String.join()
Sie stattdessen gemäß anderen Antworten, wenn Sie bereits eine Sammlung haben, oder eine,StringBuilder
wenn nicht.quelle
quelle
Möglicherweise möchten Sie StringBuilder auch nicht für eine so einfache Operation erzeugen. Bitte beachten Sie, dass ich den Namen Ihres Arrays aus Gründen der Inhaltskonformität von Name in Namen geändert habe :
quelle
Zwei Zeilen (ohne Deklarationen; 'finalstring' sollte anfangs gleich einer leeren Zeichenfolge deklariert werden), wenn Sie nicht viel Wert auf den vertikalen Abstand der for () -Schleife legen:
Zwei Zeilen, du bist fertig. :) :)
quelle
Hier ist eine Utility-Methode, mit der Sie ein Array aufteilen und Ihr benutzerdefiniertes Trennzeichen mit verwenden können
hier ist es :
Ändern Sie den zweiten Argumenttyp entsprechend Ihrem Array-Typ
quelle
Dies wäre eine optimierte Vorgehensweise
quelle
Erweiterung für frühere Java 8-Lösung
Wenn Sie ein Präfix oder / und ein Suffix für Array-Werte benötigen
Oder einfaches Methodenkonzept
Beispielsweise
quelle
Das kann hilfreich sein !!!
quelle