[英]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.