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

如何通过编程将姓名格式化为「姓氏,名字」?含典型示例

如何将姓名格式化为「姓氏, 名字」形式?

针对你给出的场景,核心思路其实很直接:把姓名按空格拆分后,最后一个部分作为姓氏,前面的所有部分(包括中间名、缩写)拼接起来作为名字,再组合成目标格式就行。下面给你两种常用编程语言的实现示例,完全适配你的测试场景:

Python 实现

def format_name(full_name):
    # 按空格拆分姓名各部分
    name_parts = full_name.split()
    # 处理只有单个名字的极端情况
    if len(name_parts) == 1:
        return full_name
    # 提取姓氏和前面的名字部分
    last_name = name_parts[-1]
    first_and_middle = ' '.join(name_parts[:-1])
    # 组合成目标格式
    return f"{last_name}, {first_and_middle}"

# 测试你的示例
print(format_name("John Michael Smith"))  # 输出: Smith, John Michael
print(format_name("Richard P. Johnson")) # 输出: Johnson, Richard P.
print(format_name("Jane Doe"))           # 输出: Doe, Jane

JavaScript 实现

function formatName(fullName) {
    const nameParts = fullName.split(' ');
    if (nameParts.length === 1) return fullName;
    const lastName = nameParts.pop();
    const firstAndMiddle = nameParts.join(' ');
    return `${lastName}, ${firstAndMiddle}`;
}

// 测试示例
console.log(formatName("John Michael Smith"));  // 输出: Smith, John Michael
console.log(formatName("Richard P. Johnson")); // 输出: Johnson, Richard P.
console.log(formatName("Jane Doe"));           // 输出: Doe, Jane

补充说明

上面的方法针对你给出的常规姓名场景完全够用,但如果遇到更复杂的情况(比如带前缀的姓氏,像 "Anne van der Berg"),简单的按空格拆分就会出错。这种时候你可能需要维护一个常见姓氏前缀的列表(比如 van, der, de 等),然后做额外判断。不过就你目前的需求来说,上面的代码已经能完美解决问题啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:27:47