簡體   English   中英

java從字符串中提取

[英]java extracting from string

我有一個類似的字符串數組

 <div id="option1">hello</div>
 <div style="color: cyan">world</div>

有沒有辦法可以從div中提取信息? 我已經寫了一些東西,但它不是動態的(我必須指定位的長度),這在我的應用程序上是無用的,因為數組內的內容並不總是相同的。

希望您能理解我的問題,如果您需要更多信息,我會盡快回復。

我正在使用java。

一個完整的Jsoup示例:

List<String> res = new ArrayList<String>();
String[] html = new String[] { 
    "<div id=\"option1\">hello</div>",
    "<div style=\"color: cyan\">world</div>" };
for (String el : html) {
    String text = Jsoup.parse(el).text();
    res.add(text);
    System.out.println(text);
}

輸出:

hello
world

請注意,示例中的HTML是格式良好的XML,也可以使用任何XML解析器進行解析。 在處理格式不正確的輸入時,您需要一個特定於HTML的解析器。

正如@SLaks所說,使用HTML解析器。 Java有很多好的。 我最喜歡的是jSoup

如果你知道只有一組HTML標簽,如果你知道它是什么標簽就更好了,你可以做類似的事情:

String[] html = new String[] { 
    "<div id=\"option1\">hello</div>",
    "<div style=\"color: cyan\">world</div>" };

for(String index : html){
    int firstEnd = index.firstIndexOf("/>");
    int lastBeginning = index.indexOf("<", 2); // Could become "</div>

    String contents = index.substring(firstEnd + 1, lastBeginning - 1);
    System.out.println(contents);
}

請注意,我沒有測試過這段代碼,也沒有在IDE中編寫代碼,所以它可能不完全正確,但我認為你可以看到我來自哪里。 只需獲取信息前最后一個標記的結束“>”和前一個標記結束部分的開頭“<”之間的字符串......

我還可以看到類似這樣的代碼被修改以處理字符串將多個HTML標簽具有一點想象力......

或者,我不敢相信我沒想到這一點,你可以使用類似下面的東西。 雖然它再次限制為一個HTML標記,但我確信如果需要你可以想出一個標記計數方法。

String[] html = new String[] { 
                "<div id=\"option1\">hello</div>",
                "<div style=\"color: cyan\">world</div>" };

        String tag = "div";
        Pattern p = Pattern.compile("<" + tag + ".*?>(.*?)</" + tag + ">");
        Matcher m;

        for(String index : html){
            m = p.matcher(index);
            while(m.find()) System.out.println(m.group(1));
        }

HTH

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM