2016-08-01 48 views

回答

-1
final String VALUE = "value=\""; 
int start = out.indexOf(VALUE) + VALUE.length(); 
int end = out.indexOf("\"", start); 
System.out.println(out.substring(start, end)); 
-1

做這樣的東西的最佳方式是使用正則表達式。

一個簡單的例子精確匹配問題的方法:

String out= "<input type=\"hidden\" name=\"javax.faces.ViewState\" id=\"javax.faces.ViewState\" value=\"H4sIAAA\" autocomplete=\"off\" />"; 
Pattern pattern = Pattern.compile(".*(value=\"(\\w*)\").*", Pattern.CASE_INSENSITIVE); 
Matcher matcher = pattern.matcher(out); 

if (matcher.matches()) { 
    System.out.println(matcher.group(2)); 
} 

這是用一個accourance僅工作了一個線路輸入端「值=」。

它是做什麼的?

  1. 它準備其整個字符串,與「value」屬性,並用該屬性「值」的值的第二組一個組相匹配的正則表達式匹配

  2. 它創建使用匹配模式和您指定的字符串「走出去」

  3. 如果匹配匹配它打印出團含量2,這是屬性值

使用正則表達式的好處是,您可以讓表達式忽略所有無用的內容,而不管它是什麼,並專注於您想要的提取。 此示例僅對具有一個值屬性的一行輸入有用。當你想分析空洞的html頁面時,你必須將它擴展到你的需求。

正則表達式DOC:https://docs.oracle.com/javase/7/docs/api/java/util/regex/package-summary.html 好的地方來測試正則表達式:http://regexr.com/

玩得開心!