【发布时间】:2016-12-06 11:14:27
【问题描述】:
我怎样才能只获得“H4sIAAA”?
String out='<input type="hidden" name="javax.faces.ViewState" id="javax.faces.ViewState" value="H4sIAAA" autocomplete="off" />';
【问题讨论】:
标签: android html-parsing
我怎样才能只获得“H4sIAAA”?
String out='<input type="hidden" name="javax.faces.ViewState" id="javax.faces.ViewState" value="H4sIAAA" autocomplete="off" />';
【问题讨论】:
标签: android html-parsing
final String VALUE = "value=\"";
int start = out.indexOf(VALUE) + VALUE.length();
int end = out.indexOf("\"", start);
System.out.println(out.substring(start, end));
【讨论】:
执行此类操作的最佳方法是使用正则表达式。
一个与您的问题完全匹配的简单示例:
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));
}
这仅适用于具有“value =”的一种行输入。
它有什么作用?
它准备了一个匹配整个字符串的正则表达式匹配器,一个具有“value”属性的组和一个具有属性“value”值的第二组
它使用模式和您给定的字符串“out”创建一个匹配器
如果匹配器匹配,则打印出组内容2,即属性值
使用正则表达式的好处是,您可以让您的表达式忽略所有无用的内容,无论它是什么,并专注于您想要的提取。 这个例子只对只有一个值属性的一行输入有用。当你要解析空洞的 html 页面时,你必须将它扩展到你的需要。
正则表达式文档:https://docs.oracle.com/javase/7/docs/api/java/util/regex/package-summary.html 测试正则表达式的好地方:http://regexr.com/
玩得开心!
【讨论】: