go-commons/stringutils 与标准库 strings 对比
Go 标准库 strings
提供了基础的字符串操作,但很多业务常见功能并没有直接支持。
go-commons/stringutils 则在其基础上做了增强和扩展。
📊 功能对照表
功能类别 | 标准库 strings | go-commons stringutils | 差异点 / 优势 |
---|---|---|---|
判空/默认值 | 需要手写 if s == "" { ... } | IsEmpty , IsBlank , DefaultIfEmpty | 一句话解决判空+默认值 |
裁剪 | Trim , TrimSpace | Trim , TrimToEmpty , TrimToNull | 多种裁剪策略,自动避免 nil 问题 |
截取 | strings.Split + 手工索引 | SubstringBefore , SubstringAfter , TruncateWithSuffix | 内置截断并支持省略号 |
查找 | Contains , HasPrefix , HasSuffix | ContainsAny , StartsWith , EndsWith | 扩展为批量匹配、集合匹配 |
替换 | Replace , ReplaceAll | ReplaceAll | 接口相似,保持习惯 |
拼接 | Join | Join , JoinWithComma , JoinPath | 增强型拼接,自动加分隔符 |
大小写转换 | ToUpper , ToLower , Title | Capitalize , Uncapitalize , SwapCase | 更多细粒度控制 |
反转 | ❌ 无 | ReverseString | 标准库不支持 |
填充对齐 | 需要手动写循环/格式化 | PadLeft , PadRight , Center | 一句话完成对齐/补齐 |
统计 | Count | CountMatches | 更直观的语义 |
安全处理 | ❌ | TrimToEmpty , DefaultIfEmpty | 避免 nil / 空值导致逻辑错误 |
🔑 使用场景举例
-
表单输入处理
用户提交空白字符串时:name := stringutils.DefaultIfEmpty(inputName, "Anonymous")
-
日志格式化
对齐日志字段:logLine := stringutils.PadRight("User:", 10, ' ') + username
-
API 返回值
长内容自动截断并加...
:preview := stringutils.TruncateWithSuffix(content, 100, "...")
✅ 总结
strings
:功能基础,适合底层操作。stringutils
:贴近业务,常见需求开箱即用。
换句话说:
👉 标准库是基础砖瓦,
👉 go-commons 是现成的工具箱。