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

如何高效将完全限定类名转换为包名缩写格式

完全限定类名的包名缩写转换实现方案

核心逻辑

将完全限定类名按.分割为多个片段,最后一段为类名保留完整写法,前面所有包名片段仅保留首字母,再用.拼接所有处理后的片段即可。时间复杂度为O(n),n为输入字符串长度,性能表现优异。

实现代码

Java 版本

public static String abbreviatePackage(String fullClassName) {
    // 空值直接返回
    if (fullClassName == null || fullClassName.isBlank()) {
        return fullClassName;
    }
    String[] parts = fullClassName.split("\\.");
    // 无包名的类名直接返回
    if (parts.length == 1) {
        return parts[0];
    }
    StringBuilder result = new StringBuilder();
    // 包名片段取首字母
    for (int i = 0; i < parts.length - 1; i++) {
        if (!parts[i].isBlank()) {
            result.append(parts[i].charAt(0)).append('.');
        }
    }
    // 拼接完整类名
    result.append(parts[parts.length - 1]);
    return result.toString();
}

Python 版本

def abbreviate_package(full_class_name: str) -> str:
    parts = full_class_name.split('.')
    if len(parts) == 1:
        return parts[0]
    # 处理包名缩写,自动跳过空片段
    pkg_abbr = [p[0] for p in parts[:-1] if p.strip()]
    pkg_abbr.append(parts[-1])
    return '.'.join(pkg_abbr)

JavaScript 版本

function abbreviatePackage(fullClassName) {
    if (!fullClassName?.trim()) return fullClassName
    const parts = fullClassName.split('.')
    if (parts.length === 1) return parts[0]
    const pkgAbbr = parts.slice(0, -1).filter(p => p.trim()).map(p => p[0])
    pkgAbbr.push(parts.at(-1))
    return pkgAbbr.join('.')
}

效果示例

  • 输入:com.test.Student → 输出:c.t.Student
  • 输入:org.springframework.web.bind.annotation.GetMapping → 输出:o.s.w.b.a.GetMapping
  • 输入:User → 输出:User

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 00:54:05