【问题标题】:subtract java text string减去java文本字符串
【发布时间】:2018-10-05 14:31:24
【问题描述】:

我想从 URL 中提取引用。

例如,我的网址如下所示:

"https://www.amazon.es/Lenovo-YOGA-520-14IKB-Ordenador-convertible/dp/B071WBF4PZ/"

我只想获取参考部分,即B071WBF4PZ

我还想从这个 html 元素中提取价格:

"<div id="cerberus-data-metrics" style="display: none;" data-asin="B078ZYX4R5" data-asin-price="1479.00" data-asin-shipping="0" data-asin-currency-code="EUR" data-substitute-count="0" data-device-type="WEB" data-display-code="Asin is not eligible because it has a retail offer" ></div>"

我只需要获取属性data-asin-price的值。

可以使用indexOf',substringorsplit` 来完成,但我不知道该怎么做。

【问题讨论】:

  • 这两个例子完全不同:计算机怎么知道如何得到你想要的信息? (您想要 URL 的最后一部分还是某些标签之间的部分,还是其他?)
  • 这些例子来自一个页面,来自我想要的最后一部分,即参考 B071WBF4PZ 在 '/' 之间的 URL,而第二部分只有 data-asin-price = 引号之间的部分“1479.00”,价格为 1479.00 谢谢
  • 你的问题是真的解析字符串,还是你的上下文是什么?例如。如果你使用 Spring,Spring 会自动为你解决这个解析。
  • 和 Spring 一样??
  • 您是否尝试从HTML 页面抓取数据?

标签: java split substring indexof


【解决方案1】:
  • 参考部分:

代码:

String url = "https://www.amazon.es/Lenovo-YOGA-520-14IKB-Ordenador-convertible/dp/B071WBF4PZ/";

String[] parts = string.split("/");
// parts : 
// [0] = "https:"
// [1] = ""
// [2] =  "www.amazon.es"
// [3] = "Lenovo-YOGA-520-14IKB-Ordenador-convertible"
// [4] = "dp"
// [5] = "B071WBF4PZ"
// [6] = ""

String reference = parts[5]; // < this is the reference.

不过,我建议使用Regular Expressions / patterns

并且在你访问[5]之前检查是否parts.length() &gt;= 6

  • 价格部分:

使用Jsoup,您可以轻松解析html 并提取data-asin-price 等属性。在这种情况下,我不会使用正则表达式。但是正则表达式不需要额外的库。

这个正则表达式:

(?:data-asin-price=")(\w*.\w*)

将匹配data-asin-price=" 之后的任何数字 - 所以匹配组 1 将是:1479.00

【讨论】:

  • 并且使用索引不能从位置 17 开始计算是价格开始的时候
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-05
相关资源
最近更新 更多