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

Java新手求助:提取Routing/Account对应数值生成键值对Map

修复代码并实现PDF文本的Routing/Account键值对提取

原代码的问题点

  • 重复定义aPattern和aMatcher变量,会直接导致编译失败
  • if条件里的rMatcher从未定义,属于语法错误
  • 正则仅匹配了"account"和"routing"关键词,未处理紧随其后的整数值
  • 异常信息描述错误(写的是找不到zip或手机号,实际目标是routing和account)

修正后的完整实现

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

public class PdfDataExtractor {
    public static Map<String, String> getRoutingAndAccount(String pdfExtractedText) {
        Map<String, String> keyValuePairs = new HashMap<>();

        // 匹配account关键词+紧邻整数(兼容大小写、中间的空格/冒号)
        String accountPatternStr = "(?i)account\\s*:?\\s*(\\d+)";
        Matcher accountMatcher = Pattern.compile(accountPatternStr).matcher(pdfExtractedText);
        if (accountMatcher.find()) {
            keyValuePairs.put("account", accountMatcher.group(1));
        } else {
            throw new RuntimeException("PDF中未找到account号码");
        }

        // 匹配routing关键词+紧邻整数
        String routingPatternStr = "(?i)routing\\s*:?\\s*(\\d+)";
        Matcher routingMatcher = Pattern.compile(routingPatternStr).matcher(pdfExtractedText);
        if (routingMatcher.find()) {
            keyValuePairs.put("routing", routingMatcher.group(1));
        } else {
            throw new RuntimeException("PDF中未找到routing号码");
        }

        return keyValuePairs;
    }

    // 测试用例
    public static void main(String[] args) {
        // 模拟从PDF提取的文本
        String sampleText = "Routing Number: 123456789\nMy Account: 9876543210";
        Map<String, String> result = getRoutingAndAccount(sampleText);
        System.out.println("提取结果: " + result);
    }
}

代码说明

  • 正则里的(?i)开启大小写不敏感匹配,\\s*:?\\s*处理关键词和数字之间可能的空格、冒号分隔符,(\\d+)捕获目标整数值
  • 每个关键词使用独立的Matcher,避免变量冲突
  • 分别校验两个号码的存在性,抛出明确的异常信息
  • 返回的Map直接以"routing"和"account"为键,对应值为提取到的数字字符串(用字符串存储避免长整数溢出问题)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 09:43:24