在Java中是否有任何内置的方法允许我们将逗号分隔的字符串转换为一些容器(例如数组,列表或向量)?或者我需要为此编写自定义代码吗?
String commaSeparated = "item1 , item2 , item3";
List<String> items = //method that converts above string into list??
在Java中是否有任何内置的方法允许我们将逗号分隔的字符串转换为一些容器(例如数组,列表或向量)?或者我需要为此编写自定义代码吗?
String commaSeparated = "item1 , item2 , item3";
List<String> items = //method that converts above string into list??
当前回答
您可以使用Guava分割字符串,并将其转换为ArrayList。这也适用于空字符串,并返回一个空列表。
import com.google.common.base.Splitter;
import com.google.common.collect.Lists;
String commaSeparated = "item1 , item2 , item3";
// Split string into list, trimming each item and removing empty items
ArrayList<String> list = Lists.newArrayList(Splitter.on(',').trimResults().omitEmptyStrings().splitToList(commaSeparated));
System.out.println(list);
list.add("another item");
System.out.println(list);
输出如下:
[item1, item2, item3]
[item1, item2, item3, another item]
你也可以不使用番石榴使用以下方法:
public static List<String> getStringAsList(String input) {
if (input == null || input.trim().length() == 0) {
return Collections.emptyList();
}
final String separators = "[;:,-]";
var result =
Splitter.on(CharMatcher.anyOf(separators))
.trimResults()
.omitEmptyStrings()
.splitToList(input);
return result;
}
其他回答
转换逗号分隔的字符串到列表
List<String> items = Arrays.asList(str.split("\\s*,\\s*"));
上面的代码在分隔符上分割字符串,分隔符定义为:零个或多个空格、一个文字逗号、零个或多个空格,这些空格将把单词放入列表中,并折叠单词和逗号之间的任何空格。
请注意,这只是返回一个数组的包装器:例如,你不能从结果列表中。remove()。对于实际的数组列表,必须进一步使用new ArrayList<String>。
数组。asList返回一个由数组支持的固定大小的List。如果你想要一个普通的可变java.util.ArrayList,你需要这样做:
List<String> list = new ArrayList<String>(Arrays.asList(string.split(" , ")));
或者,用番石榴:
List<String> list = Lists.newArrayList(Splitter.on(" , ").split(string));
使用Splitter可以更灵活地分割字符串,例如,可以跳过结果中的空字符串和修剪结果。它的怪异行为也比String少。拆分以及不需要你通过正则表达式拆分(这只是一个选项)。
在Java 8中将集合转换为逗号分隔的字符串
listOfString对象包含["A","B","C","D"]个元素-
listOfString.stream().map(ele->"'"+ele+"'").collect(Collectors.joining(","))
输出结果为:- ' A ', ' B ', ' C ', ' D '
和转换字符串数组到列表在Java 8
String string[] ={"A","B","C","D"};
List<String> listOfString = Stream.of(string).collect(Collectors.toList());
在java中,可以这样做
String catalogue_id = "A, B, C";
List<String> catalogueIdList = Arrays.asList(catalogue_id.split(", [ ]*"));
List commaseperated = new ArrayList();
String mylist = "item1 , item2 , item3";
mylist = Arrays.asList(myStr.trim().split(" , "));
// enter code here