如何拆分逗号分隔的string?
我有一个未知长度的string,看起来像这样
"dog, cat, bear, elephant, ..., giraffe"
在逗号分隔这个string的最佳方式是什么,这样每个单词可以成为一个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.
你可以这样做:
String str = "..."; List<String> elephantList = Arrays.asList(str.split(","));
基本上.split()
方法将根据(在这种情况下)分隔符来分割string,并返回一个string数组。
然而,你似乎是在一个string列表而不是一个数组,所以数组必须通过使用Arrays.asList()
实用程序变成一个列表。 就像参考一样,你也可以这样做:
String str = "..."; ArrayList<String> elephantList = Arrays.asList(str.split(","));
但是通常编程到一个接口而不是实际的具体实现是更好的做法,所以我会推荐第一个选项。
那么,你想分裂 ,对吧?
String animals = "dog, cat, bear, elephant, giraffe"; String[] animalsArray = animals.split(",");
如果你想额外摆脱项目周围的空格:
String[] animalsArray = animals.split("\\s*,\\s*");
一个小的改进:上面的解决scheme不会删除实际string中的前导或尾随空格。 调用split之前最好调用trim。 相反,
String[] animalsArray = animals.split("\\s*,\\s*");
使用
String[] animalsArray = animals.trim().split("\\s*,\\s*");
你可以拆分它并创build一个数组,然后像数组一样访问
String names = "prappo,prince,ahsan"; String[] namesList = names.split(",");
你可以访问像
String name1 = names[0]; String name2 = names[1];
或使用循环
for(String name : namesList){ System.out.println(name); }
希望它会帮助你。
首先你可以像这样分割名字
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*");
可以试试这个为我工作
sg = sg.replaceAll(", $", "");
要不然
if (sg.endsWith(",")) { sg = sg.substring(0, sg.length() - 1); }
为了完整性,使用番石榴库,你会做: 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()
那样调整正则expression式的正则expression式 。
如果您的项目已经使用番石榴,这应该是您的首选解决scheme。 请参阅Guava用户指南中的 Splitter文档或javadoc以获取更多configuration选项。
删除所有的空格,并创build一个固定大小或不可变的列表(请参阅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中删除string中的空格 )
你可以使用这样的东西:
String animals = "dog, cat, bear, elephant, giraffe"; List<String> animalList = Arrays.asList(animals.split(","));
此外,你会包括库:
import java.util.ArrayList; import java.util.Arrays; import java.util.List;
有一个名为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