You need to enable JavaScript to run this app. 如何从全名字符串中提取名字和首个含连接前缀的复合姓氏
优惠活动
大模型
产品
解决方案
定价
更多

如何从全名字符串中提取名字和首个含连接前缀的复合姓氏

提取规则提炼

从你给出的示例可以明确匹配规则:

  • 首个空格分隔的片段固定为名字,直接保留
  • 需要识别常见的复合姓氏连接前缀(这类前缀常见于葡萄牙语、西班牙语、意大利语姓名,比如di、e、de、da、do、dos、das等)
  • 名字之后的片段如果是前缀,就和紧邻的下一个片段共同组成首个完整姓氏;如果不是前缀,直接取该片段作为首个姓氏
  • 最终返回「名字 + 首个完整姓氏」的拼接结果
Java 实现代码
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;

public class NameExtractor {
    // 预置复合姓氏前缀集合,可根据实际场景扩展
    private static final Set<String> SURNAME_PREFIX = new HashSet<>(Arrays.asList(
            "di", "e", "de", "da", "do", "dos", "das", "del", "della", "van", "von"
    ));

    public static String extractFirstFullName(String fullName) {
        if (fullName == null || fullName.trim().isEmpty()) {
            return "";
        }
        String[] nameParts = fullName.trim().split("\\s+");
        // 只有名字没有姓氏的情况直接返回
        if (nameParts.length == 1) {
            return fullName;
        }
        // 第一个元素固定是名字
        StringBuilder result = new StringBuilder(nameParts[0]);
        // 从第二个元素开始判断
        int index = 1;
        if (SURNAME_PREFIX.contains(nameParts[index].toLowerCase())) {
            // 是前缀的话,拼接前缀和下一个姓氏片段
            result.append(" ").append(nameParts[index]);
            if (index + 1 < nameParts.length) {
                result.append(" ").append(nameParts[index + 1]);
            }
        } else {
            // 不是前缀直接拼接当前片段作为姓氏
            result.append(" ").append(nameParts[index]);
        }
        return result.toString();
    }

    public static void main(String[] args) {
        // 测试示例
        System.out.println(extractFirstFullName("Andre Santos Silva")); // 输出 Andre Santos
        System.out.println(extractFirstFullName("Andre di Santos Silva")); // 输出 Andre di Santos
        System.out.println(extractFirstFullName("Andre e Santos Silva")); // 输出 Andre e Santos
    }
}
注意事项
  • 前缀集合可以根据你实际处理的姓名所属地区、语言场景按需增删
  • 代码已经做了大小写兼容,不管前缀是大写Di还是小写di都能正确识别
  • 如果遇到极端场景比如多个连续前缀(极少出现),可以调整遍历逻辑,匹配到连续前缀全部拼接直到遇到第一个非前缀片段即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 05:15:01