在Java中是否有任何内置的方法允许我们将逗号分隔的字符串转换为一些容器(例如数组,列表或向量)?或者我需要为此编写自定义代码吗?

String commaSeparated = "item1 , item2 , item3";
List<String> items = //method that converts above string into list??

当前回答

在Kotlin中,如果你的字符串列表像这样,你可以使用这行代码将字符串转换为数组列表

var str= "item1, item2, item3, item4"
var itemsList = str.split(", ")

其他回答

虽然这个问题已经很老了,并且已经被回答了很多次,但没有一个答案能够处理以下所有情况:

->空字符串应该映射到空列表 " A, b, c " ->所有元素都应该被修剪,包括第一个和最后一个元素 ",," ->空元素应该被删除

因此,我使用以下代码(使用org.apache.commons.lang3.StringUtils,例如https://mvnrepository.com/artifact/org.apache.commons/commons-lang3/3.11):)

StringUtils.isBlank(commaSeparatedEmailList) ?
            Collections.emptyList() :
            Stream.of(StringUtils.split(commaSeparatedEmailList, ','))
                    .map(String::trim)
                    .filter(StringUtils::isNotBlank)
                    .collect(Collectors.toList());

使用简单的分割表达式有一个优点:不使用正则表达式,因此性能可能更高。commons-lang3库是轻量级的,非常通用。

注意,实现假设您没有包含逗号的列表元素(即。“a, b, c, d”将被解析(“a”、“b”,“c””,“d”),而不是(“a”、“b, c”、“d”)。

两个步骤:

String [] = commaSeparated.split项目(“\ \ s * \ \ s *”); List<String> container = Arrays.asList(items);

你可以结合asList和split

Arrays.asList(CommaSeparated.split("\\s*,\\s*"))
List commaseperated = new ArrayList();
String mylist = "item1 , item2 , item3";
mylist = Arrays.asList(myStr.trim().split(" , "));

// enter code here

你可以这样做。

这样就去掉了空白和用逗号分隔的地方,你不需要担心空白。

    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);