在Java中将String 转换为逗号分隔的string

我有一个String[]

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

我想要在IN子句内的SQL查询发送名称作为参数,所以我如何转换成格式

 'amit','rahul','surya' 
 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 ""; } 

要么自己写一个简单的方法,要么使用其中的一个公用程序。

我个人使用apache的StringUtils( StringUtils.join )

编辑:在Java 8中,你根本不需要这个:

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

Android开发者可能正在寻找TextUtils.join

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

码:

 String[] name = {"amit", "rahul", "surya"}; TextUtils.join(",",name) 
 StringBuilder sb = new StringBuilder(); for (String n : name) { if (sb.length() > 0) sb.append(','); sb.append("'").append(n).append("'"); } return sb.toString(); 

您也可以使用org.apache.commons.lang.StringUtils API在Java中使用string数组形成逗号分隔结果。

StringUtils.join(strArr,",");

如果您已经将Spring Framework作为依赖项,那么您也可以使用非常简单的util方法:

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

你也可以使用番石榴图书馆来简化它:

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

使用StringBuilder并遍历您的String [],并将每个String附加到它:

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

很好,很简单:但需要java8!

String result = String.join(“,”,names);

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

我用这个

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

你也可能不想为这种简单的操作产生StringBuilder。 请注意,为了内容符合性,我已经将数组的名称名称更改为名称

 String[] names = {"amit", "rahul", "surya"}; String namesString = ""; int delimeters = (names.size() - 1); for (String name : names) namesString += (delimeters-- > 0) ? "'" + name + "'," : "'" + name + "'"; 

两行(不包括声明;'finalstring'最初应该声明为空string),如果你不关心垂直间隔for()循环:

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

两行,你完成了。 🙂

这里是一个实用的方法来分割一个数组,并把你的自定义分隔符,使用

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

这里是 :

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

更改第二个参数types以适应您的数组types

这将是一个优化的方式

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

你可以用一行代码来做到这一点:

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

USE StringUtils.join函数:例如

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