如何在特定字符内的字符串中提取整数?

时间:2015-06-03 13:55:43

标签: java

我希望在Java中以字符串形式获取整数。字符串是:

{{1}}

我希望得到值" 669",它介于_和"之间。我知道可以使用StringTokenizer,但我写的代码不太好。有没有更简单的解决方案呢?

4 个答案:

答案 0 :(得分:4)

您可以使用Pattern和Matcher类通过正则表达式解决它。这是一个例子:

private static final Pattern PATTERN = Pattern.compile(".*_(\\d{3})\".*");

public static void main(String[] args) throws ParseException {
    final String input = "<a target=\"_blank\" href=\"http://www.gazzetta.it/calcio/fantanews/statistiche/serie-a-2014-15/andrea_pirlo_669\">Pirlo A.</a>";
    final Matcher m = PATTERN.matcher(input);
    if (m.matches()) {
        System.out.println(m.group(1));
    } else {
        System.out.println("No match");
    }
}

正则表达式为.*_(\\d{3})\".*

.* - &gt;任何数字(包括0)的任何字符

_ - &gt;字符_

(\\d{3}) - &gt; 3位数。括号告诉正则表达式引擎将此匹配保持为一个组,稍后将其称为组1(m.group(1)

\" - &gt;双引号字符

.* - &gt;任何数字(包括0)的任何字符

答案 1 :(得分:1)

此代码有效:

    Pattern p = Pattern.compile(".*_(\\d+)\".*");
    Matcher m = p.matcher(<yourstringhere>);
    if (m.matches()) {
        System.out.println(m.group(1));
    }

要理解它,请查看正则表达式,例如: http://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html

答案 2 :(得分:1)

或者你不能使用String split方法(它会在param中通过regex将splitted string作为数组返回)

  1. ">
  2. 拆分
  3. 第一个结果1.分割为_
  4. number将是结果数组中的最后一项(array[array.length-1]
  5. :)

答案 3 :(得分:1)

以下是使用Jsoup的解决方案:

public void extractNumber()
{
    String s = "<a target=\"_blank\" href=\"http://www.gazzetta.it/calcio/fantanews/statistiche/serie-a-2014-15/andrea_pirlo_669\">Pirlo A.</a>";
    Document document = Jsoup.parse(s);
    System.out.println(document);
    Elements elementsByTag = document.getElementsByTag("a");
    String attr = elementsByTag.attr("href");
    System.out.println(attr);
    String sNumber = attr.substring(attr.lastIndexOf('_')+1);
    System.out.println(Integer.parseInt(sNumber));
}

请注意,elementsByTag是一个集合,您可能希望对每个<a />的{​​{1}}属性进行迭代并执行