我有一个方法从jsoup scrape返回一个String,就像这样:
New York Aer Lingus EI104 23 Feb 05:15
首先,我希望能够将字符串格式化为以下内容:
AerLingus From: New York No: EI104 Time: 23 Feb 05:15 Status: Arrived
现在我使用字符串拆分并将每个单词拆分为数组中的元素。麻烦的是,有些航空公司有两个名字,有些是一个,有些出发名字。如果这个问题一直都是固定的,我可以将一些元素连在一起并保留在那里,但是当它进入数组时,进入数组的元素数量是动态的。
如何将字符串的某些元素拆分为数组元素而不是其他元素?有没有办法做到这一点?
我希望能够说纽约是一个元素,而爱尔兰航空是一个元素,等等......
public ArrayList<ArrivalDetails> process() throws IOException{
Document doc = Jsoup.connect(url).get();
Elements tableRow = doc.getElementsByTag("tr");
for(Element tr : tableRow){
if(tr.text().contains(airline)){
if(tr.text().contains("Arrived")){
String delims = "[ ]+";
String[] singleRowArray = tr.text().split(delims);
ArrivalDetails temp = new ArrivalDetails(singleRowArray);
capture.add(temp);
}
}
}
testPrint();
return capture;
}
public static void testPrint(){
System.out.println("====================TEST=======================");
System.out.println(capture.get(capture.size()-8));
System.out.println("================END TEST=======================");
}
我的其他课程
public class ArrivalDetails {
String origin;
String airline1;
String airline2;
String flightNo;
String date;
String month;
String arrTime;
String status;
public ArrivalDetails(String[] singleRowArray) {
this.origin = singleRowArray[0];
this.airline1 = singleRowArray[1];
this.airline2 = singleRowArray[2];
this.flightNo = singleRowArray[3];
this.date = singleRowArray[4];
this.month = singleRowArray[5];
this.arrTime = singleRowArray[6];
this.status = singleRowArray[7];
}
@Override
public String toString() {
String airline = airline1.concat(airline2);
return airline1 + airline2 + " From: " + origin + " " + " No: " + flightNo + " Time: "+date+" "+month+" "+arrTime +" Status: "+ status ;
}
}
答案 0 :(得分:1)
您唯一的安全选项是拥有航空公司和城市的列表,或者至少是航空公司,并使用主要字符串中该字符串的位置作为其余的分隔符。因为它们似乎都遵循相同的模式,CITY AIRLINE FLIGHTN DATE