有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!


共 (2) 个答案

  1. # 1 楼答案

    您可以使用相同的列表来使用列表的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);
            }
        }
    }
    
  2. # 2 楼答案

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

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