繁体   English   中英

将字符串数组列表拆分为多个子字符串,然后将其添加到hashmap中: 硒

[英]Splitting an arraylist of strings into multiple substrings and add them into hashmap : JAva | Selenium

我有以下清单:

1:成人(1 X 9,288)

2:儿童(1 X 9,288)

3:婴儿(1 X 2,429)

4:成人(1 X2,712)

5:儿童(1 X 2,712)

6:婴儿(1 X 146)

我需要从abve列表中提取信息,如下所示:

清单1:成人,儿童,婴儿

清单2:1,1,1,1,1,1

清单3:9,288,9,288,2,429.2,712,2,712,146

使用下面的代码,但给我错误:

        HashMap<String, HashMap<String,String>>getPassengerList(){
        HashMap<String, HashMap<String,String>> map = new HashMap<String, HashMap<String,String>>();
        HashMap<String,String> map1 = new HashMap<String,String>();

        //ArrayList<String> passlist = new ArrayList<>();
        int size = paxList.size();
        for(int i=0;i<size;i++){
            //passlist.add(paxList.get(i).getText());
            System.out.println(paxList.get(i).getText());
            String pax = (paxList.get(i).getText().trim()).replaceAll("(", "");
            String[] passType = pax.split(" ");
            System.out.println(passType[0]+" ....... "+passType[1]);
            String[] passCount = passType[1].split("X");
            map1.put(passCount[0],passCount[1]);
            map.put(passType[0],map1);
        }


        for(String name : map.keySet()){
            String key = name.toString();
            String value = map.get(name).toString();
             System.out.println(key + " " + value);  
        }

        return map;

    }
import java.util.ArrayList;
import java.util.List;

/**
 * 
 * @author jekink
 *
 */
public class Test {


    public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        list.add("Adult(s) ‎(1 X 9,288)‎");
        list.add("Child(s) ‎(1 X 9,288)‎");
        list.add("Infant(s) ‎(1 X 2,429)‎‎");
        list.add("Adult(s) ‎(1 X2,712)‎‎");
        list.add("Child(s) ‎(1 X 2,712)‎");
        list.add("Infant(s) ‎(1 X 146)‎");

        List<String> list1= new ArrayList();
        List<String> list2= new ArrayList();
        List<String> list3= new ArrayList();
        String first;
        String second;
        String third;

        for(String value:list){       
             second=value.split("X")[0].split("\\(")[2];
             first=value.split("\\)")[0]+")";
             third=value.split("X")[1].trim().split("\\)")[0];
           if(!list1.contains(first)){
               list1.add(first);
           }
            list2.add(second);
            list3.add(third);

        }
        System.out.println("List1 :"+list1);
        System.out.println("List2 :"+list2);
        System.out.println("List3 :"+list3);
}

}

可以使用Split方法获取结果字符串,然后将它们添加到单独的列表中。 以下代码为我解决了这个问题:

    List<String> list1= new ArrayList();
    List<String> list2= new ArrayList();
    List<String> list3= new ArrayList();

    //myList is your original list
    for(int i=0;i<myList.size();i++){       
        String r=myList.get(i).split("X")[0].split("\\(")[2];//gives you list1 elements
        String m=myList.get(i).split("\\)")[0]+")";//gives you list2 elements   
        String l=myList.get(i).split("X")[1].trim().split("\\)")[0];//gives you list3 elements  
        list1.add(m);
        list2.add(r);
        list3.add(l);

    }

只需使用空格分隔符将字符串分割一次,然后替换任何不需要的括号即可。 只需确保检查错误即可,例如ArrayIndexOutOfBounds

List<String> list1 = new ArrayList<>();
List<String> list2 = new ArrayList<>();
List<String> list3 = new ArrayList<>();

for (String item : strings) {
    String[] splitItems = item.split(" ");
    list1.add(splitItems[1]);
    list2.add(splitItems[2].replace("(", ""));
    list3.add(splitItems[4].replace(")", ""));
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM