在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??
当前回答
没有内置的方法,但你可以简单地使用split()方法。
String commaSeparated = "item1 , item2 , item3";
ArrayList<String> items =
new ArrayList<String>(Arrays.asList(commaSeparated.split(",")));
其他回答
在Kotlin中,如果你的字符串列表像这样,你可以使用这行代码将字符串转换为数组列表
var str= "item1, item2, item3, item4"
var itemsList = str.split(", ")
数组。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少。拆分以及不需要你通过正则表达式拆分(这只是一个选项)。
转换逗号分隔的字符串到列表
List<String> items = Arrays.asList(str.split("\\s*,\\s*"));
上面的代码在分隔符上分割字符串,分隔符定义为:零个或多个空格、一个文字逗号、零个或多个空格,这些空格将把单词放入列表中,并折叠单词和逗号之间的任何空格。
请注意,这只是返回一个数组的包装器:例如,你不能从结果列表中。remove()。对于实际的数组列表,必须进一步使用new ArrayList<String>。
你可以这样做。
这样就去掉了空白和用逗号分隔的地方,你不需要担心空白。
String myString= "A, B, C, D";
//Remove whitespace and split by comma
List<String> finalString= Arrays.asList(myString.split("\\s*,\\s*"));
System.out.println(finalString);
我通常使用预编译模式的列表。而且这也更通用一些,因为它可以考虑一些listToString表达式后面的括号。
private static final Pattern listAsString = Pattern.compile("^\\[?([^\\[\\]]*)\\]?$");
private List<String> getList(String value) {
Matcher matcher = listAsString.matcher((String) value);
if (matcher.matches()) {
String[] split = matcher.group(matcher.groupCount()).split("\\s*,\\s*");
return new ArrayList<>(Arrays.asList(split));
}
return Collections.emptyList();