在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, ",")