2014-02-24 157 views
-2

我有一個從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 ; 
    } 

    } 
+0

這是Java而不是JavaScript。 –

+0

由於該字符串沒有關於具有特徵尺寸的「Aer Lingus」或「紐約」的保證,因此沒有單獨的方法可以在沒有預知功能的情況下始終得到正確的分割,即已知分詞列表。 – abiessu

+1

您如何計劃瞭解「紐約美國人」是否與航空公司「紐約美國人」或「紐約」與航空公司「美國人」是目的地「新」?我沒有與JSoup一起工作,但你應該看看你是否可以在每個「真實」令牌後添加一個分隔符。 – clcto

回答

1

你只有安全選項是有航空公司和城市的列表,或者至少有航空公司,並在主要字符串內使用該字符串的位置作爲其餘的分隔符。因爲它們似乎都遵循相同的模式,所以CITY AIRLINE FLIGHTN DATE

+0

既然如此,一張航空公司名單就很容易讓人想起。數組是否是存儲列表的最佳方法?如果我正在使用航空公司,而不是事先拆分字符串,我該如何編碼它。我是新來的Java和學習,因爲我去這裏。 –