如何拆分以逗号分隔的字符串?

时间:2012-05-17 07:43:42

标签: java string split

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

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

将这个字符串除以逗号的最佳方法是什么,这样每个单词都可以成为ArrayList的一个元素?

例如

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.

14 个答案:

答案 0 :(得分:309)

你可以这样做:

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

基本上.split()方法将根据(在这种情况下)传递的分隔符拆分字符串,并返回字符串数组。

但是,您似乎在使用字符串列表而不是数组,因此必须使用Arrays.asList()实用程序将数组转换为列表。就像一个FYI,你也可以这样做:

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

但是通常更好的做法是编程到接口而不是实际的具体实现,所以我建议第一个选项。

答案 1 :(得分:144)

嗯,你想拆分,对吧?

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

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

如果你想另外摆脱物品周围的空白:

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

答案 2 :(得分:21)

您可以拆分它并创建一个数组然后像数组一样访问

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

您可以像

一样访问
String name1 = namesList [0];
String name2 = namesList [1];

或使用循环

for(String name : namesList){
System.out.println(name);
}
希望它会对你有所帮助。

答案 3 :(得分:17)

一个小改进:上面的解决方案不会删除实际String中的前导或尾随空格。在调用split之前调用trim更好。 而不是这个,

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

使用

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

答案 4 :(得分:3)

首先,您可以像这样分割名称

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

答案 5 :(得分:3)

为了完整性,使用Guava库,您可以: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()那样处理tweak regexes for corner cases

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

答案 6 :(得分:2)

可以尝试用这个为我工作

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

或者

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

答案 7 :(得分:0)

删除所有空格并创建固定大小不可变列表(请参阅asList API docs

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 answer 从Java中的字符串中删除空格

答案 8 :(得分:0)

您可以使用以下内容:

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

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

此外,您还包含了libs:

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

答案 9 :(得分:0)

使用此:

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

答案 10 :(得分:0)

在科特林,

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

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

答案 11 :(得分:0)

在build.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);
    }

享受:)

答案 12 :(得分:0)

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

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

答案 13 :(得分:-1)

有一个名为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