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

Jam*_*zio 191 java string split

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

"dog, cat, bear, elephant, ..., giraffe"
Run Code Online (Sandbox Code Playgroud)

将这个字符串除以逗号的最佳方法是什么,这样每个单词都可以成为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.
Run Code Online (Sandbox Code Playgroud)

npi*_*nti 320

你可以这样做:

String str = "...";
List<String> elephantList = Arrays.asList(str.split(","));
Run Code Online (Sandbox Code Playgroud)

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

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

String str = "...";
ArrayList<String> elephantList = new ArrayList<>(Arrays.asList(str.split(","));
Run Code Online (Sandbox Code Playgroud)

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

  • `str.split`接受正则表达式,所以你可以使用`str.split(",[]*");`这样你就可以删除逗号后的逗号和空格. (44认同)
  • 请记住,这不会修剪值,因此strings.get(1)将是"cat"而不是"cat" (9认同)
  • 逗号分隔文件(csv)可能在引号中有逗号,这意味着它不是分隔符.在这种情况下,拆分不起作用. (4认同)
  • 第二个选项需要强制转换为`ArrayList <String>`. (2认同)
  • 如果您需要保留空条目(例如,对于一致的数组长度),请按照http://stackoverflow.com/questions/14602062/java-string-split-removed-empty-values使用split(",", - 1) (2认同)

Tom*_*icz 149

好吧,你想拆分吧?

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

String[] animalsArray = animals.split(",");
Run Code Online (Sandbox Code Playgroud)

如果你想另外摆脱项目周围的空白:

String[] animalsArray = animals.split("\\s*,\\s*");
Run Code Online (Sandbox Code Playgroud)

  • 关于删除空格的+1点. (11认同)
  • 我一直想了 10 个小时,然后搜索了 SO。不知道 .split() 这么容易; (2认同)

Pra*_*nce 22

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

String names = "prappo,prince";
String[] namesList = names.split(",");
Run Code Online (Sandbox Code Playgroud)

你可以访问

String name1 = namesList [0];
String name2 = namesList [1];
Run Code Online (Sandbox Code Playgroud)

或使用循环

for(String name : namesList){
System.out.println(name);
}
Run Code Online (Sandbox Code Playgroud)

希望它会对你有所帮助.


use*_*858 18

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

 String[] animalsArray = animals.split("\\s*,\\s*");
Run Code Online (Sandbox Code Playgroud)

使用

 String[] animalsArray = animals.trim().split("\\s*,\\s*");
Run Code Online (Sandbox Code Playgroud)

  • 我不确定@WIZARD因为trim只删除字符串的左右空格,而不删除其中的空格.所以`trim("string,with,space")`将是``string,with,space"`. (5认同)
  • 你测试一下吗?因为我刚写了一个程序java和字符串`"string,with,space".trim()`return`"string,with,space"`.就像javadoc所说:返回字符串的副本,省略前导和尾随空格.你错了,@ user872858是对的. (5认同)