拆分字符串的某些部分

时间:2014-02-24 22:33:10

标签: java arrays string split

我有一个方法从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 ;
    }

    }

1 个答案:

答案 0 :(得分:1)

您唯一的安全选项是拥有航空公司和城市的列表,或者至少是航空公司,并使用主要字符串中该字符串的位置作为其余的分隔符。因为它们似乎都遵循相同的模式,CITY AIRLINE FLIGHTN DATE