我如何“找到”并“获取”两个字符串之间的值?
ie:<a>3</a>
我正在读取一个文件以找到<a>
的位置,在那里开始,然后它会在找到</a>
时停止读取我想要返回的值是“3”。
使用JRE 6
答案 0 :(得分:12)
您的两个主要选项是:
1)首选但可能很复杂:使用XML / HTML解析器并在第一个“a”元素中获取文本。例如使用Jsoup(感谢@ alpha123):
Jsoup.parse("<a>3</a>").select("a").first().text(); // => "3"
2)更容易但不太可靠:使用正则表达式提取<a>
和</a>
字符串之间的字符。 e.g:
String s = "<a>3</a>";
Pattern p = Pattern.compile("<a>(.*?)</a>")
Matcher m = p.matcher(s);
if (m.find()) {
System.out.println(m.group(1)); // => "3"
}
答案 1 :(得分:6)
Jsoup可以轻松完成此任务。
String title = Jsoup.parse("<a>3</a>").select("a").first().text();
答案 2 :(得分:2)
您可以使用正则表达式:
try {
Pattern regex = Pattern.compile("<a>(.*)</a>");
Matcher regexMatcher = regex.matcher(subjectString);
while (regexMatcher.find()) {
for (int i = 1; i <= regexMatcher.groupCount(); i++) {
// matched text: regexMatcher.group(i)
// match start: regexMatcher.start(i)
// match end: regexMatcher.end(i)
}
}
} catch (PatternSyntaxException ex) {
// Syntax error in the regular expression
}
但是,如果你的输入是HTML,你应该考虑使用HTML解析器。