Documentation
¶
Index ¶
- func ChunkSplit(input string, chunkSize int, delimiter string) string
- func DefaultIfEmpty(s string, defaultValue string) string
- func EqualFold(s1, s2 string) bool
- func FilterInvisibleChars(s string) string
- func FilterNumber(str string) string
- func FirstLower(s string) string
- func FirstUpper(s string) string
- func GBKToUTF8(b []byte) (string, error)
- func IsEmpty(s string) bool
- func IsNotEmpty(s string) bool
- func MakeHump(s, delimiter string) string
- func Normalize(s string) string
- func PadLeft(s string, length int, pad rune) string
- func PadRight(s string, length int, pad rune) string
- func Random(n int) string
- func RandomString(n int, charset ...string) string
- func ReplacePlaceholders(query string, replacements []string) string
- func Reverse(s string) string
- func ToCamelCase(s string, delimiter string) string
- func Truncate(s string, length int, omission ...string) string
- func UTF8ToGBK(s string) ([]byte, error)
- func UnderscoreToCamelCase(s string) string
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func ChunkSplit ¶
ChunkSplit 将字符串按指定长度分割成多个块,并在每个块之间添加分隔符 参数:
- input: 要分割的字符串
- chunkSize: 每个块的大小(字符数)
- delimiter: 块之间的分隔符
返回值:
- string: 分割后的字符串,每个块之间包含指定的分隔符
使用示例:
// 每4个字符分割,使用连字符作为分隔符 result := tstring.ChunkSplit("HelloWorld", 4, "-") // 返回 "Hell-oWor-ld" // 用于格式化长字符串 text := "1234567890abcdefghij" formatted := tstring.ChunkSplit(text, 5, "\n") // 每5个字符换行
注意事项:
- 如果 chunkSize 小于等于0,返回原始字符串
- 最后一个块如果长度小于 chunkSize,也会添加分隔符
- 分割基于字节而不是字符,对于多字节字符可能会出现意外的分割
func DefaultIfEmpty ¶
DefaultIfEmpty 如果字符串为空或仅包含空白字符,则返回默认值 参数:
- s: 要检查的字符串
- defaultValue: 当字符串为空时返回的默认值
返回值:
- string: 如果输入字符串非空则返回原字符串,否则返回默认值
使用示例:
// 处理空字符串 result := tstring.DefaultIfEmpty("", "N/A") // 返回 "N/A" result := tstring.DefaultIfEmpty(" \t\n", "N/A") // 返回 "N/A" result := tstring.DefaultIfEmpty("hello", "N/A") // 返回 "hello" // 用于提供默认显示文本 name := getUserName() // 可能返回空字符串 display := tstring.DefaultIfEmpty(name, "Anonymous")
注意事项:
- 使用 IsEmpty 函数判断字符串是否为空
- 会移除字符串首尾的空白字符后再判断
- 如果默认值也是空字符串,仍然会返回默认值
- 常用于处理可选的显示文本
func EqualFold ¶
EqualFold 比较两个字符串是否相等,忽略大小写差异 参数:
- s1: 第一个字符串
- s2: 第二个字符串
返回值:
- bool: 如果两个字符串在忽略大小写的情况下相等,返回 true;否则返回 false
使用示例:
// 比较不同大小写的相同单词 equal := tstring.EqualFold("hello", "HELLO") // 返回 true equal := tstring.EqualFold("World", "world") // 返回 true // 比较不同的单词 equal := tstring.EqualFold("hello", "world") // 返回 false
注意事项:
- 使用 Unicode 大小写折叠规则进行比较
- 支持多语言字符的大小写比较
- 空字符串只与空字符串相等
- 此函数比直接转换后比较更高效
func FilterInvisibleChars ¶
FilterInvisibleChars 从字符串中过滤掉所有不可见字符(控制字符和特殊字符) 参数:
- s: 要过滤的字符串
返回值:
- string: 只包含可见字符的字符串
使用示例:
// 过滤控制字符 text := "Hello\x00World\x1F" clean := tstring.FilterInvisibleChars(text) // 返回 "HelloWorld" // 过滤空格和制表符 text := "Hello\t \nWorld" clean := tstring.FilterInvisibleChars(text) // 返回 "HelloWorld"
注意事项:
- ASCII码 32(空格)以下的字符会被移除
- ASCII码 127(DEL)及以上的字符会被移除
- 此函数主要用于清理可能包含控制字符的用户输入
- 如果需要保留空格,应该使用 Normalize 函数
func FilterNumber ¶
FilterNumber 从字符串中移除所有数字字符 参数:
- str: 要处理的字符串
返回值:
- string: 移除所有数字后的字符串
使用示例:
// 移除版本号中的数字 version := "v1.2.3" result := tstring.FilterNumber(version) // 返回 "v.." // 从产品编号中提取字母部分 code := "ABC123DEF456" letters := tstring.FilterNumber(code) // 返回 "ABCDEF"
注意事项:
- 会移除所有阿拉伯数字(0-9)
- 不会移除其他类型的数字(如罗马数字、中文数字等)
- 保留所有其他字符,包括标点符号和空白字符
- 如果字符串只包含数字,将返回空字符串
func FirstLower ¶
FirstLower 将字符串的首字母转换为小写 参数:
- s: 要转换的字符串
返回值:
- string: 首字母小写的字符串
使用示例:
result := tstring.FirstLower("Hello") // 返回 "hello" result := tstring.FirstLower("World") // 返回 "world"
注意事项:
- 如果输入字符串为空,返回空字符串
- 只转换第一个字符,其他字符保持不变
- 此函数通常用于生成符合小驼峰命名规范的标识符
func FirstUpper ¶
FirstUpper 将字符串的首字母转换为大写(标题格式) 参数:
- s: 要转换的字符串
返回值:
- string: 首字母大写的字符串
使用示例:
result := tstring.FirstUpper("hello") // 返回 "Hello" result := tstring.FirstUpper("world") // 返回 "World"
注意事项:
- 如果输入字符串为空,返回空字符串
- 使用 Unicode 标题格式规则进行转换,支持各种语言的字符
- 只转换第一个字符,其他字符保持不变
func GBKToUTF8 ¶
GBKToUTF8 将GBK编码的字节序列转换为UTF-8编码的字符串 参数:
- b: GBK编码的字节序列
返回值:
- string: 转换后的UTF-8字符串
- error: 如果转换过程中出现错误则返回错误信息
使用示例:
gbkBytes := []byte{0xB2, 0xE2, 0xCA, 0xD4} // GBK编码的"测试" utf8Str, err := tstring.GBKToUTF8(gbkBytes) if err != nil { return err } fmt.Println(utf8Str) // 输出: 测试
注意事项:
- 输入必须是有效的GBK编码字节序列
- 如果输入包含非GBK编码的字节,会返回错误
- 建议配合 UTF8ToGBK 函数使用,实现编码的双向转换
func IsEmpty ¶
IsEmpty 检查字符串是否为空或仅包含空白字符 参数:
- s: 要检查的字符串
返回值:
- bool: 如果字符串为空或仅包含空白字符返回 true,否则返回 false
使用示例:
// 检查空字符串 empty := tstring.IsEmpty("") // 返回 true empty := tstring.IsEmpty(" \t\n") // 返回 true empty := tstring.IsEmpty("hello") // 返回 false
注意事项:
- 会移除字符串首尾的空白字符后再判断
- 空白字符包括空格、制表符、换行符等
- 常用于验证用户输入是否有效
func IsNotEmpty ¶
IsNotEmpty 检查字符串是否非空且包含非空白字符 参数:
- s: 要检查的字符串
返回值:
- bool: 如果字符串非空且包含非空白字符返回 true,否则返回 false
使用示例:
// 检查非空字符串 notEmpty := tstring.IsNotEmpty("hello") // 返回 true notEmpty := tstring.IsNotEmpty("") // 返回 false notEmpty := tstring.IsNotEmpty(" \t\n") // 返回 false
注意事项:
- 是 IsEmpty 函数的逻辑取反
- 会移除字符串首尾的空白字符后再判断
- 空白字符包括空格、制表符、换行符等
- 常用于验证必填字段
func Normalize ¶
Normalize 标准化字符串,移除多余的空白字符和换行符 参数:
- s: 要标准化的字符串
返回值:
- string: 标准化后的字符串,所有连续的空白字符会被替换为单个空格, 字符串首尾的空白字符会被移除
使用示例:
text := " Hello World\n\r " normalized := tstring.Normalize(text) // 返回 "Hello World"
注意事项:
- 会处理所有类型的空白字符,包括空格、制表符、换行符等
- 如果输入字符串只包含空白字符,返回空字符串
func PadLeft ¶
PadLeft 在字符串左侧填充指定字符,直到字符串达到目标长度 参数:
- s: 要填充的字符串
- length: 目标长度
- pad: 用于填充的字符
返回值:
- string: 左侧填充后的字符串
使用示例:
// 数字前补零 num := "42" result := tstring.PadLeft(num, 5, '0') // 返回 "00042" // 文本左对齐 text := "Hello" result := tstring.PadLeft(text, 10, ' ') // 返回 " Hello"
注意事项:
- 如果原字符串长度大于或等于目标长度,返回原字符串
- 如果目标长度小于等于0,返回原字符串
- 填充字符使用 rune 类型,支持 Unicode 字符
- 常用于格式化输出,如数字前补零
func PadRight ¶
PadRight 在字符串右侧填充指定字符,直到字符串达到目标长度 参数:
- s: 要填充的字符串
- length: 目标长度
- pad: 用于填充的字符
返回值:
- string: 右侧填充后的字符串
使用示例:
// 文本右对齐 text := "Hello" result := tstring.PadRight(text, 10, '-') // 返回 "Hello-----" // 固定宽度格式化 name := "John" result := tstring.PadRight(name, 8, ' ') // 返回 "John "
注意事项:
- 如果原字符串长度大于或等于目标长度,返回原字符串
- 如果目标长度小于等于0,返回原字符串
- 填充字符使用 rune 类型,支持 Unicode 字符
- 常用于固定宽度的文本格式化
func RandomString ¶
RandomString 生成指定长度的随机字符串,支持自定义字符集 参数:
- n: 要生成的字符串长度
- charset: 可选的字符集,如果不提供则使用默认字符集(字母和数字)
返回值:
- string: 生成的随机字符串
使用示例:
// 使用默认字符集(字母和数字) str := tstring.RandomString(8) // 可能返回 "a1B2c3D4" // 使用自定义字符集 str := tstring.RandomString(6, "ABCDEF0123456789") // 生成6位16进制字符 // 生成纯数字随机串 str := tstring.RandomString(4, "0123456789") // 生成4位数字验证码
注意事项:
- 使用 crypto/rand 生成安全的随机数
- 默认字符集包含大小写字母和数字
- 如果生成随机数失败,会使用最后一个字符(极少发生)
- 适用于生成验证码、临时密码等场景
- 生成的字符串长度严格等于指定的长度
func ReplacePlaceholders ¶
ReplacePlaceholders 按顺序将字符串中的问号(?)替换为提供的替换值 参数:
- query: 包含问号占位符的字符串
- replacements: 要替换的值列表,按顺序替换每个问号
返回值:
- string: 完成替换后的字符串
使用示例:
// 替换SQL查询中的占位符 query := "SELECT * FROM users WHERE age > ? AND status = ?" sql := tstring.ReplacePlaceholders(query, []string{"18", "'active'"}) // 返回: "SELECT * FROM users WHERE age > 18 AND status = 'active'" // 替换消息模板中的占位符 template := "Hello ?, your code is ?" msg := tstring.ReplacePlaceholders(template, []string{"John", "123456"}) // 返回: "Hello John, your code is 123456"
注意事项:
- 如果替换值数量少于问号数量,剩余的问号将保持不变
- 如果替换值数量多于问号数量,多余的替换值将被忽略
- 替换是按顺序进行的,从左到右替换每个问号
- 此函数不处理转义的问号(如 \?)
func Reverse ¶
Reverse 将输入字符串按字节顺序反转 参数:
- s: 要反转的字符串
返回值:
- string: 反转后的字符串
使用示例:
reversed := tstring.Reverse("Hello") // 返回 "olleH"
注意事项:
- 此函数按字节处理,对于多字节字符(如中文)可能会产生乱码
- 如果需要处理Unicode字符,应该使用 []rune 进行处理
func ToCamelCase ¶
ToCamelCase 将分隔符分隔的字符串转换为小驼峰格式(第一个单词首字母小写,其他单词首字母大写) 参数:
- s: 要转换的字符串
- delimiter: 单词之间的分隔符
返回值:
- string: 转换后的小驼峰格式字符串
使用示例:
// 使用下划线分隔的字符串 result := tstring.ToCamelCase("hello_world_test", "_") // 返回 "helloWorldTest" // 使用空格分隔的字符串 result := tstring.ToCamelCase("hello world test", " ") // 返回 "helloWorldTest" // 使用连字符分隔的字符串 result := tstring.ToCamelCase("hello-world-test", "-") // 返回 "helloWorldTest"
注意事项:
- 如果输入字符串为空,返回空字符串
- 连续的分隔符会被视为一个分隔符
- 分隔符前后的空白字符会被忽略
- 第一个单词会被转换为全小写,之后的单词首字母大写
func Truncate ¶
Truncate 将字符串截断到指定长度,并可选地在末尾添加省略号或其他标记 参数:
- s: 要截断的字符串
- length: 目标长度(字符数)
- omission: 可选的省略标记,默认为"..."
返回值:
- string: 截断后的字符串,如果需要则包含省略标记
使用示例:
// 使用默认省略号 text := "Hello, World!" result := tstring.Truncate(text, 8) // 返回 "Hello..." // 使用自定义省略标记 text := "Hello, World!" result := tstring.Truncate(text, 8, ">>>") // 返回 "Hello>>>" // 不需要截断的情况 text := "Hello" result := tstring.Truncate(text, 10) // 返回 "Hello"
注意事项:
- 如果 length 小于等于0,返回空字符串
- 如果原字符串长度小于等于目标长度,返回原字符串
- 省略标记的长度会计入目标长度中
- 如果省略标记长度大于等于目标长度,返回省略标记的前 length 个字符
- 此函数按 Unicode 字符处理,支持中文等多字节字符
func UTF8ToGBK ¶
UTF8ToGBK 将UTF-8编码的字符串转换为GBK编码的字节序列 参数:
- s: UTF-8编码的字符串
返回值:
- []byte: GBK编码的字节序列
- error: 如果转换过程中出现错误则返回错误信息
使用示例:
// 转换中文字符串 utf8Str := "测试" gbkBytes, err := tstring.UTF8ToGBK(utf8Str) if err != nil { return err } // gbkBytes 现在包含GBK编码的字节序列 // 写入GBK编码的文件 gbkBytes, err := tstring.UTF8ToGBK("你好,世界") if err != nil { return err } err = os.WriteFile("hello.txt", gbkBytes, 0644)
注意事项:
- 输入必须是有效的UTF-8编码字符串
- 如果字符在GBK字符集中不存在,会返回错误
- 建议配合 GBKToUTF8 函数使用,实现编码的双向转换
- 主要用于处理需要GBK编码的遗留系统或中文Windows系统
func UnderscoreToCamelCase ¶
UnderscoreToCamelCase 将下划线格式的字符串转换为驼峰格式
Types ¶
This section is empty.