在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;
}
其他回答
两个步骤:
String [] = commaSeparated.split项目(“\ \ s * \ \ s *”); List<String> container = Arrays.asList(items);
没有内置的方法,但你可以简单地使用split()方法。
String commaSeparated = "item1 , item2 , item3";
ArrayList<String> items =
new ArrayList<String>(Arrays.asList(commaSeparated.split(",")));
在groovy中,你可以使用tokenize(Character Token)方法:
list = str.tokenize(',')
一个使用集合的例子。
import java.util.Collections;
...
String commaSeparated = "item1 , item2 , item3";
ArrayList<String> items = new ArrayList<>();
Collections.addAll(items, commaSeparated.split("\\s*,\\s*"));
...
List<String> items= Stream.of(commaSeparated.split(","))
.map(String::trim)
.collect(Collectors.toList());