List<String> ids = new ArrayList<String>();
ids.add("1");
ids.add("2");
ids.add("3");
ids.add("4");
现在我想要这个列表的输出为 1,2,3,4 而不显式迭代它。
在 Android 上使用:
android.text.TextUtils.join(",", ids);
使用 Java 8:
String csv = String.join(",", ids);
使用Java 7-,有一种肮脏的方式(注意:它仅在您不插入包含", "
在列表中的字符串时才有效)-显然,List#toString
将执行一个循环来创建idList
,但它不会出现在您的代码中:
List<String> ids = new ArrayList<String>();
ids.add("1");
ids.add("2");
ids.add("3");
ids.add("4");
String idList = ids.toString();
String csv = idList.substring(1, idList.length() - 1).replace(", ", ",");
import com.google.common.base.Joiner;
Joiner.on(",").join(ids);
或者您可以使用StringUtils:
public static String join(Object[] array,
char separator)
public static String join(Iterable<?> iterator,
char separator)
将提供的数组/可迭代的元素连接到包含提供的元素列表的单个字符串中。
如果要将列表转换为 CSV 格式............
List<String> ids = new ArrayList<String>();
ids.add("1");
ids.add("2");
ids.add("3");
ids.add("4");
// CSV format
String csv = ids.toString().replace("[", "").replace("]", "")
.replace(", ", ",");
// CSV format surrounded by single quote
// Useful for SQL IN QUERY
String csvWithQuote = ids.toString().replace("[", "'").replace("]", "'")
.replace(", ", "','");
最快的方法是
StringUtils.join(ids, ",");
一班轮(纯Java)
list.toString().replace(", ", ",").replaceAll("[\\[.\\]]", "");
在ArrayList上加入/连接和拆分函数:
使用逗号(" , ") 将数组列表的所有元素/concat 连接到字符串。
List<String> ids = new ArrayList<String>();
ids.add("1");
ids.add("2");
ids.add("3");
ids.add("4");
String allIds = TextUtils.join(",", ids);
Log.i("Result", allIds);
使用逗号(" , ")将 String 的所有元素拆分为arraylist。
String allIds = "1,2,3,4";
String[] allIdsArray = TextUtils.split(allIds, ",");
ArrayList<String> idsList = new ArrayList<String>(Arrays.asList(allIdsArray));
for(String element : idsList){
Log.i("Result", element);
}
完毕
我有字符串的 ArrayList,我需要将其转换为逗号分隔的列表,没有空格。ArrayList toString() 方法添加方括号、逗号和空格。我尝试了正则表达式方法,如下所示。
List<String> myProductList = new ArrayList<String>();
myProductList.add("sanjay");
myProductList.add("sameer");
myProductList.add("anand");
Log.d("TEST1", myProductList.toString()); // "[sanjay, sameer, anand]"
String patternString = myProductList.toString().replaceAll("[\\s\\[\\]]", "");
Log.d("TEST", patternString); // "sanjay,sameer,anand"
请评论以获得更有效的逻辑。(代码适用于Android / Java)
谢谢。
如果不是字符串集合,Java 8 解决方案:
{Any collection}.stream()
.collect(StringBuilder::new, StringBuilder::append, StringBuilder::append)
.toString()
如果对象下有属性,您可以使用下面的代码。
String getCommonSeperatedString(List<ActionObject> actionObjects) {
StringBuffer sb = new StringBuffer();
for (ActionObject actionObject : actionObjects){
sb.append(actionObject.Id).append(",");
}
sb.deleteCharAt(sb.lastIndexOf(","));
return sb.toString();
}
如果您使用的是Eclipse Collections(以前称为 GS Collections),则可以使用该makeString()
方法。
List<String> ids = new ArrayList<String>();
ids.add("1");
ids.add("2");
ids.add("3");
ids.add("4");
Assert.assertEquals("1,2,3,4", ListAdapter.adapt(ids).makeString(","));
如果您可以将您的转换ArrayList
为 a FastList
,则可以摆脱适配器。
Assert.assertEquals("1,2,3,4", FastList.newListWith(1, 2, 3, 4).makeString(","));
注意:我是 Eclipse 集合的提交者。
这是下面给出的代码,用于将 List 转换为逗号分隔的字符串,而无需显式迭代 List,因为您必须创建一个列表并在其中添加项目,而不是将其转换为逗号分隔的字符串
此代码的输出将是:Veeru,Nikhil,Ashish,Paritosh
而不是列表 [Veeru,Nikhil,Ashish,Paritosh] 的输出
String List_name;
List<String> myNameList = new ArrayList<String>();
myNameList.add("Veeru");
myNameList.add("Nikhil");
myNameList.add("Ashish");
myNameList.add("Paritosh");
List_name = myNameList.toString().replace("[", "")
.replace("]", "").replace(", ", ",");