如何分割逗号分隔的字符串?

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

"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.
764124 次浏览

你可以这样做:

String str = "...";
List<String> elephantList = Arrays.asList(str.split(","));

基本上,.split()方法将根据你传递的分隔符(在本例中)分割字符串,并返回一个字符串数组。

然而,您似乎是在寻找字符串列表而不是数组,因此必须使用Arrays.asList()实用程序将数组转换为列表。仅供参考,你也可以这样做:

String str = "...";
ArrayList<String> elephantList = new ArrayList<>(Arrays.asList(str.split(","));

但是针对接口而不是实际的具体实现进行编程通常是更好的实践,因此我推荐第一个选项。

你想要分裂,对吗?

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


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

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

String[] animalsArray = animals.split("\\s*,\\s*");
一个小改进:上述解决方案不会删除实际字符串中的前导或尾随空格。在调用split之前最好调用trim。 而不是

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

使用

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

首先,你可以像这样拆分名字

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


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

访问您的动物

String animal1 = animals_list[0];
String animal2 = animals_list[1];
String animal3 = animals_list[2];
String animal4 = animals_list[3];

此外,你还需要移除动物名称周围的空格和逗号

String animals_list[] = 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

为了完整起见,使用番石榴库,您将执行:Splitter.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]

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

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

注意trimResults()如何处理所有的修剪需求,而不需要针对极端情况调整正则表达式,就像String.split()一样。

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

你可以把它分割成一个数组,然后像数组一样访问:

String names = "prappo,prince";
String[] namesList = names.split(",");

您可以通过它的索引访问它

String name1 = namesList [0];
String name2 = namesList [1];

或者使用循环

for(String name : namesList){
System.out.println(name);
}

删除所有空白并创建固定大小不可变的列表(参见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 回答 to 在Java中删除字符串中的空白)

你可以这样使用:

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


List<String> animalList = Arrays.asList(animals.split(","));

此外,你应该包括lib:

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

我能试试这个吗

 sg = sg.replaceAll(", $", "");

否则

if (sg.endsWith(",")) {
sg = sg.substring(0, sg.length() - 1);
}

用这个:

        List<String> splitString = (List<String>) Arrays.asList(jobtype.split(","));

在芬兰湾的科特林,

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

其中stringArrayList<String>commasStringString,带有逗号和空格

在构建。gradle加番石榴

    compile group: 'com.google.guava', name: 'guava', version: '27.0-jre'

然后

    public static List<String> splitByComma(String str) {
Iterable<String> split = Splitter.on(",")
.omitEmptyStrings()
.trimResults()
.split(str);
return Lists.newArrayList(split);
}


public static String joinWithComma(Set<String> words) {
return Joiner.on(", ").skipNulls().join(words);
}

享受:)

这是一个用逗号分割字符串的简单方法,

import java.util.*;


public class SeparatedByComma{
public static void main(String []args){
String listOfStates = "Hasalak, Mahiyanganaya, Dambarawa, Colombo";
List<String> stateList = Arrays.asList(listOfStates.split("\\,"));
System.out.println(stateList);
}
}

“老school"java.utilStringTokenizer:

StringTokenizer(字符串 str, 字符串 delim)

import java.util.*;


public class Tokenizer {
public static void main(String[] args) {
String str = "dog, cat, bear, elephant, ..., giraffe";
StringTokenizer tokenizer = new StringTokenizer(str, ",");


List<String> strings = new ArrayList<String>();


while (tokenizer.hasMoreTokens()) {
// if need to trim spaces .trim() or use delim like ", "
String token = tokenizer.nextToken().trim();
strings.add(token);
}
// test output
strings.forEach(System.out::println);
}
}
< p >注: StringTokenizer是出于兼容性原因而保留的遗留类,尽管在新代码中不鼓励使用它。建议寻求此功能的人使用String的< >强分< / >强方法或< >强java.util.regex < / >强包。

例子:

import java.util.regex.*;
...
// Recommended method<?>
Pattern commaPattern = Pattern.compile("\\s*,\\s*");
String[] words = commaPattern.split(str);
List<String> wordList = new ArrayList<String>(Arrays.asList(words));


// test output
wordList.forEach(System.out::println);
...

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

字符串str=测试1,测试2,测试3;;

List<String> elementList = Arrays.asList(str.replaceAll("\\s*,\\s*", ",").split(","));

输出=["test 1" test 2" test 3"]

它适用于所有情况。

稍后谢谢我:-)