我有一个长度未知的字符串,看起来像这样

"dog, cat, bear, elephant, ..., giraffe"

用逗号分隔这个字符串的最佳方法是什么,这样每个单词都可以成为数组列表的一个元素?

例如

List<String> strings = new ArrayList<Strings>();
// Add the data here so strings.get(0) would be equal to "dog",
// strings.get(1) would be equal to "cat" and so forth.

当前回答

在Kotlin

val stringArray = commasString.replace(", ", ",").split(",")

where stringArray是列表<字符串>和commasString是字符串与逗号和空格

其他回答

你想分开,对吧?

String animals = "dog, cat, bear, elephant, giraffe";

String[] animalsArray = animals.split(",");

如果你想去除项目周围的空格:

String[] animalsArray = animals.split("\\s*,\\s*");

有一个名为replaceAll()的函数,它可以删除所有空白,将它们替换为您想要的任何内容。举个例子

String str="  15. 9 4;16.0 1"
String firstAndSecond[]=str.replaceAll("\\s","").split(";");
System.out.println("First:"+firstAndSecond[0]+", Second:"+firstAndSecond[1]);

会给你:

First:15.94, Second:16.01

为了完整起见,使用Guava库,您可以这样做:split .on(",").split(" dog,cat,fox ")

另一个例子:

String animals = "dog,cat, bear,elephant , giraffe ,  zebra  ,walrus";
List<String> l = Lists.newArrayList(Splitter.on(",").trimResults().split(animals));
// -> [dog, cat, bear, elephant, giraffe, zebra, walrus]

split .split()返回一个Iterable,所以如果你需要一个List,就像上面那样把它包装在Lists.newArrayList()中。否则就使用Iterable,例如:

for (String animal : Splitter.on(",").trimResults().split(animals)) {
    // ...
}

请注意trimResults()是如何处理所有修剪需求的,而不必像String.split()那样为角落的情况调整正则表达式。

如果您的项目已经使用了Guava,这应该是您的首选解决方案。更多配置选项,请参阅Guava用户指南或javadocs中的Splitter文档。

删除所有空白,并创建一个固定大小或不可变的列表(参见asList API文档)

final String str = "dog, cat, bear, elephant, ..., giraffe";
List<String> list = Arrays.asList(str.replaceAll("\\s", "").split(","));
// result: [dog, cat, bear, elephant, ..., giraffe]

也可以使用replaceAll(\\s+", ""),但最大效率取决于用例。(见@GurselKoca回答从Java字符串中删除空白)

简单而简短的解决方案:-

字符串str="测试1,测试2,测试3"; List<String> elementList = Arrays.asList(str. aslist)replaceAll(“\ \ s * \ \ s * ", ", ") .split (", ")); 输出=["test 1","test 2","test 3"]

它适用于所有情况。

稍后谢谢我:-)