You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java字符串处理:提取URL参考码与HTML元素价格的实现方法

Got it, let's tackle these two string processing tasks in Java step by step. Both can be handled with either straightforward string manipulation or regular expressions—let's cover both approaches so you can choose what fits your code style and requirements.

1. Extract ASIN from Amazon URL

Amazon product URLs follow a consistent pattern where the ASIN (your "reference code") comes right after /dp/. Here are two reliable ways to pull it out:

Approach 1: String Splitting & Manipulation

This method works great if you’re confident the URL will always follow the standard /dp/ASIN/... structure:

public static String extractAsinFromUrl(String url) {
    // Split the URL at the "/dp/" marker
    String[] urlParts = url.split("/dp/");
    if (urlParts.length < 2) {
        return null; // URL doesn't match expected format
    }
    // Split the resulting segment at the next "/" or "?" to isolate the ASIN
    String asinSegment = urlParts[1].split("[/?]")[0];
    // Validate: Amazon ASINs are always 10 alphanumeric characters
    return asinSegment.length() == 10 ? asinSegment : null;
}

// Quick usage example
public static void main(String[] args) {
    String targetUrl = "https://www.amazon.es/Lenovo-YOGA-520-14IKB-Ordenador-convertible/dp/B071WBF4PZ/";
    String extractedAsin = extractAsinFromUrl(targetUrl);
    System.out.println("Extracted ASIN: " + extractedAsin); // Outputs B071WBF4PZ
}

Approach 2: Regular Expression

Regex is more flexible if the URL might have extra parameters or minor format variations:

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public static String extractAsinWithRegex(String url) {
    // Regex to match "/dp/" followed by exactly 10 alphanumeric characters (ASIN format)
    Pattern asinPattern = Pattern.compile("/dp/([A-Z0-9]{10})");
    Matcher matcher = asinPattern.matcher(url);
    
    if (matcher.find()) {
        return matcher.group(1); // Return the captured ASIN group
    }
    return null;
}

// Usage example
String extractedAsin = extractAsinWithRegex(targetUrl);
System.out.println("Extracted ASIN: " + extractedAsin); // Outputs B071WBF4PZ
2. Extract Price from HTML Element Attribute

We need to pull the data-asin-price value from the given HTML snippet. Here are two methods to do this:

Approach 1: String Search & Substring

This is a simple, direct approach for targeting this specific attribute:

public static String extractPriceFromString(String htmlSnippet) {
    String attributeMarker = "data-asin-price=\"";
    int startIndex = htmlSnippet.indexOf(attributeMarker);
    
    if (startIndex == -1) {
        return null; // Attribute not found in the snippet
    }
    // Move past the attribute name and opening quote
    startIndex += attributeMarker.length();
    // Find the closing quote to mark the end of the price value
    int endIndex = htmlSnippet.indexOf("\"", startIndex);
    
    if (endIndex == -1) {
        return null; // Malformed HTML snippet (no closing quote)
    }
    return htmlSnippet.substring(startIndex, endIndex);
}

// Usage example
String htmlElement = "<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-co...";
String extractedPrice = extractPriceFromString(htmlElement);
System.out.println("Extracted Price: " + extractedPrice); // Outputs 1479.00

Approach 2: Regular Expression

Regex handles minor formatting variations (like whitespace around the attribute) more gracefully:

public static String extractPriceWithRegex(String htmlSnippet) {
    // Regex to match the data-asin-price attribute and capture its numeric value
    Pattern pricePattern = Pattern.compile("data-asin-price=\"([\\d\\.]+)\"");
    Matcher matcher = pricePattern.matcher(htmlSnippet);
    
    if (matcher.find()) {
        return matcher.group(1); // Return the captured price value
    }
    return null;
}

// Usage example
String extractedPrice = extractPriceWithRegex(htmlElement);
System.out.println("Extracted Price: " + extractedPrice); // Outputs 1479.00

Quick Notes for Production Code:

  • Add extra validation (e.g., parse the price to a double/BigDecimal to confirm it’s a valid number).
  • If you’re working with full HTML documents regularly, consider using a dedicated HTML parser like Jsoup—it’s far more robust against unexpected HTML structure changes than raw string manipulation.

内容的提问来源于stack exchange,提问作者Ashe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 08:18:11