【问题标题】:split certain parts of a string拆分字符串的某些部分
【发布时间】: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 LingusNew York 具有特征大小,因此没有单一的方法可以在没有先见之明的函数的情况下始终获得正确的拆分,即已知单词的列表分裂。
  • 您打算如何知道“纽约美国人”是航空公司“约克美国人”的目的地“新”还是“纽约”航空公司是“美国”航空公司的目的地?我没有使用过 JSoup,但您应该看看是否可以在每个“真实”标记后添加分隔符。

标签: java arrays string split


【解决方案1】:

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

【讨论】:

  • 既然如此,航空公司名单很容易让人联想到。数组是存储列表的最佳方法吗?如果我使用航空公司而不事先拆分字符串,我将如何对其进行编码。我是 Java 新手,我在这里学习。
猜你喜欢
  • 1970-01-01
  • 2019-04-04
  • 1970-01-01
  • 2019-08-29
  • 2014-09-07
  • 1970-01-01
  • 2016-12-27
  • 2012-01-26
  • 1970-01-01
相关资源
最近更新 更多