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

Java 如何拆分逗号分隔的字符串?,java,string,split,Java,String,Split,我有一个长度未知的字符串,看起来像这样 "dog, cat, bear, elephant, ..., giraffe" String animals = "dog, cat, bear, elephant,giraffe"; String animals_list[] = animals.split(","); 在逗号处分割此字符串以使每个单词成为ArrayList的元素的最佳方式是什么 比如说 List<String> strings = new ArrayList<

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

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

String animals_list[] = animals.split(",");
在逗号处分割此字符串以使每个单词成为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.
List strings=new ArrayList();
//在此处添加数据,使strings.get(0)等于“dog”,
//get(1)将等于“cat”,以此类推。
您可以这样做:

String str = "...";
List<String> elephantList = 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*");
使用


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

"dog, cat, bear, elephant, ..., giraffe"
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]
请注意
trimResults()
如何处理您的所有修剪需求,而不必像
String.split()
一样


如果您的项目已经使用番石榴,这应该是您的首选解决方案。有关更多配置选项,请参阅或中的拆分器文档。

您可以拆分它并生成阵列,然后像阵列一样访问

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

final String str=“狗、猫、熊、大象、长颈鹿”;
List List=Arrays.asList(str.replaceAll(“\\s”,”).split(“,”);
//结果:[狗,猫,熊,大象,…,长颈鹿]

也可以使用
replaceAll(\\s+“,”)
,但最大效率取决于用例。(请参阅@GurselKoca to在Java中删除字符串中的空格

您可以使用类似的方法:

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

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

你能试试这个对我有用吗

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

if (sg.endsWith(",")) {
                    sg = sg.substring(0, sg.length() - 1);
                }
使用以下命令:

        List<String> splitString = (List<String>) Arrays.asList(jobtype.split(","));
List splitString=(List)Arrays.asList(jobtype.split(“,”);
在科特林

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

其中
stringArray
List
commasString
String
,在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);
    }
公共静态列表splitByComma(字符串str){
Iterable split=拆分器(“,”)上的
.省略空字符串()
.trimpresults()
.split(str);
返回列表。newArrayList(拆分);
}
公共静态字符串joinWithComma(设置字){
返回Joiner.on(“,”).skipNulls().join(单词);
}

享受:)

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

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);
 }
}
import java.util.*;
用逗号分隔的公共类{
公共静态void main(字符串[]args){
字符串listOfStates=“Hasalak、Mahiyanganaya、Dambarawa、科伦坡”;
List stateList=Arrays.asList(listOfStates.split(“\\,”);
System.out.println(状态列表);
}
}

是的,这是解决方案的一部分。OP似乎是在字符串列表之后,而不是数组。@npinti:yep,+1对你来说,你更快了,我不想复制你的
数组。asList()
习惯用法。我一直想了10个小时,然后搜索。不知道这么容易。split();如果要将分割后的项目存储在集合中而不是数组中,该怎么办?使用方法split(“spliting char”)它会分割字符串,并且该方法将使用分割的单词创建字符串数组。请记住,这不会修剪值,因此字符串。get(1)将是“cat”而不是“cat”“
str.split
接受正则表达式,因此您可以使用
str.split(“,[]*”)
因此删除逗号后的逗号和空格。逗号分隔文件(csv)的引号中可能有逗号,这意味着它不是分隔符。在这种情况下,拆分将不起作用。第二个选项要求转换为
ArrayList
。如果需要保留空条目(例如,用于一致的数组长度),请按照第二行使用拆分(“,”,-1),如果使用trim(),则不需要像
(“\\s*,\\s*”)
那样进行空格拆分,只需使用
(“,”)这将产生相同的结果。我不确定是否有@WIZARD,因为trim只删除字符串的左右空格,而不删除其中的空格。所以
trim(“string,with,space”)
将是
“string,with,space”
@ThomasLeduc如果string是这样的
“狗、猫、熊、大象、长颈鹿”
那么就不需要
trim()
,在我们的情况下,如果使用
trim()
,那么输出将是
“string,with,space”
而不是这个
“string,with,space”
trim()
将删除所有空格,而不仅仅是string的左空格和右空格。您对它进行了测试吗?因为我刚刚编写了一个java程序,字符串
“string,with,space”。trim()
返回
“string,with,space”“
。就像javadoc所说的:返回字符串的副本,省略前导和尾随空格。你错了,@user872858是对的。这段代码我用于JDK。如果需要打印阵列。使用System.out.PrintLn您可以使用Splitter.splitToList,它返回一个不可修改的列表
    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);
 }
}