Convert String[] to comma separated string in java

Java

Java Problem Overview


i have one String[]

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

i want to send name as parameter in sql query inside IN clause so how do i convert into a format

'amit','rahul','surya'

Java Solutions


Solution 1 - Java

Either write a simple method yourself, or use one of the various utilities out there.

Personally I use apache StringUtils (StringUtils.join)

edit: in Java 8, you don't need this at all anymore:

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

Solution 2 - Java

Android developers are probably looking for TextUtils.join

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

Code:

String[] name = {"amit", "rahul", "surya"};
TextUtils.join(",",name)

Solution 3 - Java

Nice and simple: but java8 required!

String result = String.join(",", names);

Solution 4 - Java

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

Solution 5 - Java

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

Solution 6 - Java

You can also use org.apache.commons.lang.StringUtils API to form a comma separated result from string array in Java.

StringUtils.join(strArr,",");

Solution 7 - Java

If you already have Spring Framework as a dependency, you could also use the very simple util method:

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

Solution 8 - Java

You could also simplify it using the Guava library:

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

Solution 9 - Java

use StringBuilder and iterate over your String[], and append each String into it:

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

Solution 10 - Java

Extention for prior Java 8 solution

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

If you need prefix or/ and suffix for array values

 StringJoiner joiner = new StringJoiner(",");
 for (CharSequence cs: name) {
     joiner.add("'" + cs + "'");
 }
 return joiner.toString();

Or simple method concept

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

For example

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

Solution 11 - Java

You can do this with one line of code:

Arrays.toString(strings).replaceAll("[\\[.\\].\\s+]", "");

Solution 12 - Java

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

Solution 13 - Java

i use this

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

Solution 14 - Java

USE StringUtils.join function: E.g.

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

Solution 15 - Java

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

Solution 16 - Java

As tempting and "cool" as the code may appear, do not use fold or reduce on large collections of strings, as these will suffer from the string concatenation 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());

Instead, as per other answers, use String.join() if you already have a collection, or a StringBuilder if not.

Solution 17 - Java

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] + "\'";
    }
}

Solution 18 - Java

You may also want not to spawn StringBuilder for such simple operation. Please note that I've changed name of your array from name to names for sake of content conformity:

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

String namesString = "";
int delimeters = (names.size() - 1);
for (String name : names)
    namesString += (delimeters-- > 0) ? "'" + name + "'," : "'" + name + "'";

Solution 19 - Java

Two lines (excluding declarations; 'finalstring' should be initially declared equal to an empty string), if you don't care a lot about vertically spacing the for() loop:

for (int i = 0; i<string_array.length; i++) {finalstring += string_array[i]+",";}
finalstring = finalstring.substring(0,finalstring.length()-1);

Two lines, you're done. :)

Solution 20 - Java

here is a Utility method to split an array and put your custom delimiter, using

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

here it is :

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

change the second argument type to suite your array type

Solution 21 - Java

This would be an optimized way of doing it

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

Solution 22 - Java

In java 8 for none string array and none primitive object (Long, Integer, ...)

List<Long> ids = Arrays.asList(1l, 2l,3l);
ids.stream().map(String::valueOf).collect(Collectors.joining(","))))

In java 8 for specific field of an objets array (example a car with 2 fields color and speed)

List<Car> cars= Cars.asList(car1, cars2,car3);
    cars.stream().map(Car::getColor).collect(Collectors.joining(","))))

Combine map with valueOf for none String field of an array of objects

Solution 23 - Java

This my be helpful!!!

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

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionDeepak KumarView Question on Stackoverflow
Solution 1 - JavaJoeri HendrickxView Answer on Stackoverflow
Solution 2 - JavaKeith EntzerothView Answer on Stackoverflow
Solution 3 - JavaChristopher PerryView Answer on Stackoverflow
Solution 4 - JavaNPEView Answer on Stackoverflow
Solution 5 - JavaNico HuysamenView Answer on Stackoverflow
Solution 6 - Javauser797649View Answer on Stackoverflow
Solution 7 - JavaNickGreenView Answer on Stackoverflow
Solution 8 - JavaacvcuView Answer on Stackoverflow
Solution 9 - JavaamitView Answer on Stackoverflow
Solution 10 - JavaVolatileView Answer on Stackoverflow
Solution 11 - JavanullbyteView Answer on Stackoverflow
Solution 12 - JavaMartijn CourteauxView Answer on Stackoverflow
Solution 13 - JavaSodiqView Answer on Stackoverflow
Solution 14 - JavaManuView Answer on Stackoverflow
Solution 15 - JavaVinayakView Answer on Stackoverflow
Solution 16 - JavaStuartLCView Answer on Stackoverflow
Solution 17 - JavaLoganView Answer on Stackoverflow
Solution 18 - JavaSergey LysenkoView Answer on Stackoverflow
Solution 19 - JavaMatt CampbellView Answer on Stackoverflow
Solution 20 - JavaAhmed Adel IsmailView Answer on Stackoverflow
Solution 21 - JavaRizView Answer on Stackoverflow
Solution 22 - JavaSalim HamidiView Answer on Stackoverflow
Solution 23 - JavaJyoti PrakashView Answer on Stackoverflow