【发布时间】:2014-02-24 22:33:09
【问题描述】:
我有一个从jsoup 抓取返回字符串的方法,类似于以下内容:
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 ;
}
}
【问题讨论】:
-
这是 Java,不是 JavaScript。
-
由于字符串不能保证
Aer Lingus或New York具有特征大小,因此没有单一的方法可以在没有先见之明的函数的情况下始终获得正确的拆分,即已知单词的列表分裂。 -
您打算如何知道“纽约美国人”是航空公司“约克美国人”的目的地“新”还是“纽约”航空公司是“美国”航空公司的目的地?我没有使用过 JSoup,但您应该看看是否可以在每个“真实”标记后添加分隔符。