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

如何从荷兰地址中提取门牌号及附加信息?

荷兰地址门牌号与附加信息拆分实现思路

核心逻辑依据

荷兰地址的门牌号部分始终以数字开头,且位于地址行的最后一段(街道名可能包含数字,比如"18 Septemberplein",但这类数字属于街道名,并非门牌号)。门牌号后的所有内容(包括字母、连字符、空格、额外楼层信息等)均属于附加信息。

分步实现思路

  1. 定位门牌号起始位置

    • 从地址行的末尾向前逆向扫描,找到第一个连续数字序列的起始点。比如在"Plein 1944 1a 1e etage"中,逆向扫描会跳过"1e"里的1,最终定位到"1a"里的1——这是地址中最后一组独立的数字开头片段,以此确定门牌号的起始位置。
    • 核心判断标准:门牌号数字是地址行中最后一组以数字开头的独立片段,需避免将街道名中包含的数字误判为门牌号。
  2. 拆分门牌号与附加信息

    • 从已定位的起始位置开始,提取连续的数字字符作为门牌号(支持多位数,比如"24"直接提取为门牌号)。
    • 数字序列结束后的所有剩余内容(无论是否有空格、连字符、字母或文本),全部作为附加信息保留原格式。例如:
      • "2-2" → 门牌号"2",附加信息"-2"
      • "1 a 1e etage" → 门牌号"1",附加信息" a 1e etage"
  3. 特殊场景处理

    • 门牌号与附加信息间有空格:如"1 a 1e etage",数字后的空格及后续内容均计入附加信息
    • 附加信息含连字符/空格:如"2 - 2",直接保留"- 2"作为附加信息
    • 街道名带数字:确保逆向扫描时只取最后一组数字开头的片段,避免误识别

COBOL适配要点

  • 利用COBOL的字符串操作指令(如INSPECT统计字符类型、UNSTRING拆分片段、子串截取)实现逆向扫描和内容提取。
  • 定义对应的数据项存储结果:门牌号可定义为字符型(兼容多位数)或数值型,附加信息定义为足够长度的字符型数据项。
  • 逆向扫描可通过循环遍历地址行的字符位置,从最后一位向前检查是否为数字,直到找到第一个非数字字符,再向前确认连续数字的边界。

测试用例验证

  • "Notenkrakerstraat 24" → 门牌号=24,附加信息=空
  • "Stationsstraat 7a" → 门牌号=7,附加信息="a"
  • "Molenweg 3 hs" → 门牌号=3,附加信息="hs"
  • "18 Septemberplein 12" → 门牌号=12,附加信息=空
  • "Kerkstraat 2-2" → 门牌号=2,附加信息="-2"
  • "Hoofdstraat 2 - 2" → 门牌号=2,附加信息="- 2"
  • "Plein 1944 1a 1e etage" → 门牌号=1,附加信息="a 1e etage"
  • "Plein 1944 1 a 1e etage" → 门牌号=1,附加信息=" a 1e etage"

内容的提问来源于stack exchange,提问作者T-men

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 21:42:42