如何在两个字符串之间找到值?

时间:2011-08-20 01:59:13

标签: java

我如何“找到”并“获取”两个字符串之间的值?

ie:<a>3</a>

我正在读取一个文件以找到<a>的位置,在那里开始,然后它会在找到</a>时停止读取我想要返回的值是“3”。

使用JRE 6

3 个答案:

答案 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解析器。