在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??
当前回答
一个使用集合的例子。
import java.util.Collections;
...
String commaSeparated = "item1 , item2 , item3";
ArrayList<String> items = new ArrayList<>();
Collections.addAll(items, commaSeparated.split("\\s*,\\s*"));
...
其他回答
在groovy中,你可以使用tokenize(Character Token)方法:
list = str.tokenize(',')
您可以使用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 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);
在Java 8中使用流有许多方法来解决这个问题,但在我看来,以下一行是直接的:
String commaSeparated = "item1 , item2 , item3";
List<String> result1 = Arrays.stream(commaSeparated.split(" , "))
.collect(Collectors.toList());
List<String> result2 = Stream.of(commaSeparated.split(" , "))
.collect(Collectors.toList());