我有以下列表:
1:成人(1×9,288)
2:孩子(1 X 9,288)
3:婴儿(1×2,429)
4:成人(1 X2,712)
5:孩子(1 X 2,712)
6:婴儿(1×146)
我需要从abve列表中提取信息,如下所示:
清单1:成人,儿童.Infant(s)
清单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;
}
答案 0 :(得分:1)
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);
}
}
答案 1 :(得分:0)
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);
}
答案 2 :(得分:0)
只需用空格分隔符将字符串拆分一次,然后替换您不想要的任何括号。只需确保检查错误,例如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(")", ""));
}