Ich habe eine String[]
String[] name = {"amit", "rahul", "surya"};
Ich möchte einen Namen als Parameter in einer SQL-Abfrage innerhalb der IN-Klausel senden. Wie konvertiere ich in ein Format?
'amit','rahul','surya'
Ich habe eine String[]
String[] name = {"amit", "rahul", "surya"};
Ich möchte einen Namen als Parameter in einer SQL-Abfrage innerhalb der IN-Klausel senden. Wie konvertiere ich in ein Format?
'amit','rahul','surya'
Antworten:
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(...)oder verwenden können TextUtils.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:
String joined = String.join(",", name);
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:
String[] name = {"amit", "rahul", "surya"};
TextUtils.join(",",name)
Schön und einfach: aber Java8 erforderlich!
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(...)? Ich denke, ein Zeilencode ist noch besser und einfacher als fünf.
Sie können die org.apache.commons.lang.StringUtilsAPI auch verwenden , um ein durch Kommas getrenntes Ergebnis vom Zeichenfolgenarray in Java zu bilden.
StringUtils.join(strArr,",");
Sie können es auch mithilfe der Guava-Bibliothek vereinfachen:
String[] name = {"amit", "rahul", "surya"};
String str = "'" + Joiner.on(",").skipNulls().join(name)
.replace(",", "','") + "'";
"amit,rahul,surya"?
Verwenden StringBuilderund iterieren Sie Ihren String [] und hängen Sie jeden String an:
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), aber was wäre wenn array.length == 0?
USE- StringUtils.joinFunktion: ZB
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 );
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);
Zwei Zeilen, du bist fertig. :) :)
Hier ist eine Utility-Methode, mit der Sie ein Array aufteilen und Ihr benutzerdefiniertes Trennzeichen mit verwenden können
String.replace(String,String)
Arrays.toString(Object[])
hier ist es :
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;
}
Ändern Sie den zweiten Argumenttyp entsprechend Ihrem Array-Typ
Erweiterung für frühere Java 8-Lösung
String result = String.join(",", name);
Wenn Sie ein Präfix oder / und ein Suffix für Array-Werte benötigen
StringJoiner joiner = new StringJoiner(",");
for (CharSequence cs: name) {
joiner.add("'" + cs + "'");
}
return joiner.toString();
Oder einfaches Methodenkonzept
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();
}
Beispielsweise
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);
Das kann hilfreich sein !!!
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"};