【问题标题】:How to take only the number before and after dot?如何只取点前后的数字?
【发布时间】:2015-04-02 20:57:52
【问题描述】:

对不起我的英语。我正在使用 Jsoup 从网站中提取用户对手机的评分。速率在 span 标签之间,但没有 class 或 id,为此我使用 span 所在的 div 标签。

for(int j=0; j<=3; j++){
         //get page 
        Document rate = Jsoup.connect("http://www.skroutz.gr/c/40/kinhta-thlefwna.html?order_dir=asc&page=" + j).userAgent("Mozilla").get();
        // get rate
        Elements phoneRate = rate.select("div[class=rating-wrapper]");
        //print all rates
        for(int i = 1; i<phoneRate.size(); i++){

            System.out.println("Rate: " + phoneRate.get(i).text());
        }
    }

我得到的结果是这样的:

率:102.9
评分:44
率:00
评分:113.1
评分:43
评分:33.3
率:00
率:15

评分数字在点之前和之后。有没有一种简单的方法可以只提取这些数字。

【问题讨论】:

  • 你只想要整数,在前 102 的情况下,而不是 102.9?
  • “点之前和之后”是什么意思?您可以编辑您的问题并为您显示的数据添加您期望的输出吗?
  • 您能打印出 phoneRate.get(i).text() 的子字符串而不是整个内容吗?
  • 也许你需要像phoneRate.get(i).text().split("\\.")一样拆分?

标签: java regex string parsing jsoup


【解决方案1】:

有用吗?

Elements phoneRate = rate.select("div[class=rating-wrapper] span");

(注意:他似乎想要 span 元素内的值,例如:http://www.skroutz.gr/c/40/kinhta-thlefwna.html?order_dir=asc&page=2

【讨论】:

    【解决方案2】:

    您可以使用此正则表达式来获取数字:

    \d+\.?\d*
    

    Working demo

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多