将逗号分隔的字符串添加到ArrayList,反之亦然
如何将逗号分隔的字符串添加到ArrayList? 我的字符串“returnedItems”可能包含1或20个项目,我想将其添加到我的ArrayList“selItemArrayList”中。
在填充ArrayList之后,我想稍后迭代它并将项目格式化为逗号分隔的字符串,项目之间没有空格。
String returnedItems = "a,b,c"; List sellItems = Arrays.asList(returnedItems.split(","));
现在迭代列表并将每个项追加到StringBuilder:
StringBuilder sb = new StringBuilder(); for(String item: sellItems){ if(sb.length() > 0){ sb.append(','); } sb.append(item); } String result = sb.toString();
单行总是很受欢迎:
Collections.addAll(arrayList, input.split(","));
split
和asList
可以解决问题:
String [] strings = returnedItems.split(","); List list = Arrays.asList(strings);
简单的单线程:
selItemArrayList.addAll(Arrays.asList(returnedItems.split("\\s*,\\s*")));
当然,如果您的条目中包含逗号,则会更复杂。
这有助于:
for (String s : returnedItems.split(",")) { selItemArrayList.add(s.trim()); } //Shorter and sweeter String [] strings = returnedItems.split(","); selItemArrayList = Arrays.asList(strings); //The reverse.... StringBuilder sb = new StringBuilder(); Iterator iter = selItemArrayList.iterator(); while (iter.hasNext()) { if (sb.length() > 0) sb.append(","); sb.append(iter.next()); } returnedItems = sb.toString();
如果字符串本身可以包含逗号,则事情会变得更复杂。 考虑使用众多开源CSV解析器中的一种,而不是自己滚动。 虽然它们设计用于读取文件,但至少OpenCSV还会解析您提供的单个字符串。
- Commons CSV
- OpenCSV
- 超级CSV
- OsterMiller CSV
如果没有引用单个项目,则:
QString str = "a,,b,c"; QStringList list1 = str.split(","); // list1: [ "a", "", "b", "c" ]
如果引用了这些项,我会添加“[]”字符并使用JSON解析器。
您可以在String上使用split()
方法将String转换为可以循环的数组。
虽然您可以跳过使用正则表达式的循环和解析来使用String上的replaceAll()来删除空格。
String list = "one, two, three, four"; String[] items = list.split("\\p{Punct}"); List aList = Arrays.asList(items); System.out.println("aList = " + aList); StringBuilder formatted = new StringBuilder(); for (int i = 0; i < items.length; i++) { formatted.append(items[i].trim()); if (i < items.length - 1) formatted.append(','); } System.out.println("formatted = " + formatted.toString());
import com.google.common.base.*; Iterable items = Splitter.on(",").omitEmptyStrings() .split("Mango,Apple,Guava"); // Join again! String itemsString = Joiner.join(",").join(items);