我必须从html代码的标记中提取一些整数。 例如,如果我有:
< tag blabla="title"><a href="/test/tt123> TEST 1 < tag >
我做了删除所有字符并只留下数字,直到标题名称中还有另一个数字,所以我得到了#34; 1231&#34;。
str.replaceAll("[^\\d.]", "");
如何才能仅提取&#34; 123&#34;整数??谢谢你的帮助!
答案 0 :(得分:1)
Jsoup是一个很好的api来玩html。使用它你可以做
String html = "<tag blabla=\"title\"><a href=\"/test/tt123\"> TEST 1 <tag>";
Document doc = Jsoup.parseBodyFragment(html);
String value = doc.select("a").get(0).attr("href").replaceAll("[^\\d.]", "");
System.out.println(value);
答案 1 :(得分:0)
你可以这样做(一种删除任何数字中所有重复项的方法):
int[] foo = new int[str.length];
for(int i = 0; i < str.length; i++) {
foo[i] = Integer.parseInt(str.charAt(i));
}
Set<Integer> set = new HashSet<Integer>();
for(int i = 0; i < foo.length; i++){
set.add(foo[i]);
}
现在你有了一个集合,其中删除了任何字符串中的所有重复数字。我没看到你最后的评论。所以这个答案对你来说可能不是很有用。你可以做的是foo数组中的三个第一个数字,它们将给你123.
答案 2 :(得分:0)
首先使用XPath
来解析href值,然后应用replaceAll
来达到您想要的效果。
您无需下载任何其他框架或库,以便实现此目的。
这是一个关于其工作原理的快速演示课程:
package com.example.test;
import java.io.StringReader;
import javax.xml.xpath.XPath;
import javax.xml.xpath.XPathConstants;
import javax.xml.xpath.XPathExpressionException;
import javax.xml.xpath.XPathFactory;
import org.xml.sax.InputSource;
public class Test {
public static void main(String[]args){
String xml = "<tag blabla=\"title\"><a href=\"/test/tt123\"> TEST 1 </a></tag>";
XPath xPath = XPathFactory.newInstance().newXPath();
InputSource source = new InputSource(new StringReader(xml));
String hrefValue = null;
try {
hrefValue = (String) xPath.evaluate("//@href", source, XPathConstants.STRING);
} catch (XPathExpressionException e) {
e.printStackTrace();
}
String numbers = hrefValue.replaceAll("[^\\d.]", "");
System.out.println(numbers);
}
}