如何在List中拆分不同类型的字符串

时间:2016-05-31 06:31:28

标签: java

我有一个列表,其中包含如下所示的值列表

[a-xyz,b-yzx,c-aaa,d-rrr,a-qqq,b-hhh]

我需要上面的列表

[xyz,yzx,aaa,rrr,qqq,hhh]

4 个答案:

答案 0 :(得分:1)

试试这个

List<String> list = Arrays.asList("a-xyz","b-yzx","c-aaa","d-rrr","a-qqq","b-hhh");
List<String> result = list.stream()
    .map(s -> s.replaceFirst("^.*-", ""))
    .collect(Collectors.toList());
System.out.println(result);

结果:

[xyz, yzx, aaa, rrr, qqq, hhh]

或Java7

List<String> list = Arrays.asList("a-xyz","b-yzx","c-aaa","d-rrr","a-qqq","b-hhh");
List<String> result = new ArrayList<>();
for (String s : list)
    result.add(s.replaceFirst("^.*-", ""));
System.out.println(result);

答案 1 :(得分:1)

这里应该做几件事。首先,您需要删除封闭的[],以便可以拆分字符串。然后,你需要实际拆分它(用逗号)。然后,对于每个字符串,您需要删除-之前的前缀。 Java 8的流为您提供了一种非常简洁的方法:

List<String> result =
    Arrays.stream(str.substring(1, str.length() - 1).split(","))
          .map(s -> s.replaceFirst("\\w-", ""))
          .collect(Collectors.toList());

编辑:
在JDK 7及更低版本中,解决方案类似,但您必须使用循环而不是流:

String[] arr = str.substring(1, str.length() - 1).split(",");
List<Stirng> result = new ArrayList<>(arr.length);
for (String s : arr) {
    result.add(s.replaceFirst("\\w-", ""));
}

答案 2 :(得分:0)

叫我老式的

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

public class Split {

    public static void main(String[] args) {
        String[] ss = {"a-xyz","b-yzx","c-aaa","d-rrr","a-qqq","b-hhh"};
        List<String> ll = new ArrayList<>();
        ll.addAll(Arrays.asList(ss));

        List<String> result = new ArrayList<>();
        for(String s:ll) {
            result.add(s.split("-")[1]);
        }

        System.out.println(result);
    }

}

给出

[xyz, yzx, aaa, rrr, qqq, hhh]

答案 3 :(得分:0)

您可以使用相同的列表来使用list的set方法存储最终值。

import java.util.ArrayList;
public class SplitList {
    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<>();
        list.add("a-xyz");
        list.add("b-yzx");
        list.add("c-aaa");
        list.add("d-rrr");
        list.add("a-qqq");
        list.add("b-hhh");
        for(String st : list){
            int index = list.indexOf(st); //get index of string
            list.set(index,st.replaceFirst("\\w-", "")); //set only with required value
        }
        for(String st : list){
            System.out.println(st);
        }
    }
}