Documentation
¶
Overview ¶
* @Author: kamalyes 501893067@qq.com * @Date: 2023-07-28 00:50:58 * @LastEditors: kamalyes 501893067@qq.com * @LastEditTime: 2025-11-27 23:55:26 * @FilePath: \go-toolbox\pkg\stringx\base.go * @Description: * * Copyright (c) 2024 by kamalyes, All Rights Reserved.
* @Author: kamalyes 501893067@qq.com * @Date: 2023-07-28 00:50:58 * @LastEditors: kamalyes 501893067@qq.com * @LastEditTime: 2024-11-01 02:15:52 * @FilePath: \go-toolbox\pkg\stringx\contains.go * @Description: * * Copyright (c) 2024 by kamalyes, All Rights Reserved.
* @Author: kamalyes 501893067@qq.com * @Date: 2026-05-13 13:19:57 * @LastEditors: kamalyes 501893067@qq.com * @LastEditTime: 2026-05-13 14:42:55 * @FilePath: \go-toolbox\pkg\stringx\conv.go * @Description: 字符串转换工具 * * Copyright (c) 2026 by kamalyes, All Rights Reserved.
* @Author: kamalyes 501893067@qq.com * @Date: 2026-01-26 00:00:00 * @LastEditors: kamalyes 501893067@qq.com * @LastEditTime: 2026-01-26 00:00:00 * @FilePath: \go-toolbox\pkg\stringx\domain.go * @Description: 域名处理工具函数 * * Copyright (c) 2026 by kamalyes, All Rights Reserved.
* @Author: kamalyes 501893067@qq.com * @Date: 2023-07-28 00:50:58 * @LastEditors: kamalyes 501893067@qq.com * @LastEditTime: 2024-11-22 10:07:57 * @FilePath: \go-toolbox\pkg\stringx\format.go * @Description: * * Copyright (c) 2024 by kamalyes, All Rights Reserved.
* @Author: kamalyes 501893067@qq.com * @Date: 2023-07-28 00:50:58 * @LastEditors: kamalyes 501893067@qq.com * @LastEditTime: 2024-08-03 16:55:01 * @FilePath: \go-toolbox\pkg\stringx\index.go * @Description: * * Copyright (c) 2024 by kamalyes, All Rights Reserved.
* @Author: kamalyes 501893067@qq.com * @Date: 2025-06-06 17:50:15 * @LastEditors: kamalyes 501893067@qq.com * @LastEditTime: 2025-06-09 16:04:03 * @FilePath: \go-toolbox\pkg\stringx\parse.go * @Description: * * Copyright (c) 2025 by kamalyes, All Rights Reserved.
* @Author: kamalyes 501893067@qq.com * @Date: 2026-05-11 13:20:41 * @LastEditors: kamalyes 501893067@qq.com * @LastEditTime: 2026-05-13 15:27:31 * @FilePath: \go-toolbox\pkg\stringx\quote.go * @Description: 引用 JSON 字符串
* @Author: kamalyes 501893067@qq.com * @Date: 2023-07-28 00:50:58 * @LastEditors: kamalyes 501893067@qq.com * @LastEditTime: 2024-07-30 17:26:07 * @FilePath: \go-toolbox\pkg\stringx\repeat.go * @Description: * * Copyright (c) 2024 by kamalyes, All Rights Reserved.
* @Author: kamalyes 501893067@qq.com * @Date: 2023-07-28 00:50:58 * @LastEditors: kamalyes 501893067@qq.com * @LastEditTime: 2024-11-22 15:15:18 * @FilePath: \go-toolbox\pkg\stringx\replace.go * @Description: * * Copyright (c) 2024 by kamalyes, All Rights Reserved.
* @Author: kamalyes 501893067@qq.com * @Date: 2023-07-28 00:50:58 * @LastEditors: kamalyes 501893067@qq.com * @LastEditTime: 2025-11-26 19:55:35 * @FilePath: \go-toolbox\pkg\stringx\split.go * @Description: * * Copyright (c) 2024 by kamalyes, All Rights Reserved.
* @Author: kamalyes 501893067@qq.com * @Date: 2023-07-28 00:50:58 * @LastEditors: kamalyes 501893067@qq.com * @LastEditTime: 2024-11-22 10:16:00 * @FilePath: \go-toolbox\pkg\stringx\start_end_with.go * @Description: * * Copyright (c) 2024 by kamalyes, All Rights Reserved.
* @Author: kamalyes 501893067@qq.com * @Date: 2023-07-28 00:50:58 * @LastEditors: kamalyes 501893067@qq.com * @LastEditTime: 2024-08-03 10:15:25 * @FilePath: \go-toolbox\pkg\stringx\sub.go * @Description: * * Copyright (c) 2024 by kamalyes, All Rights Reserved.
* @Author: kamalyes 501893067@qq.com * @Date: 2023-07-28 00:50:58 * @LastEditors: kamalyes 501893067@qq.com * @LastEditTime: 2024-11-22 10:37:52 * @FilePath: \go-toolbox\pkg\stringx\trim.go * @Description: * * Copyright (c) 2024 by kamalyes, All Rights Reserved.
* @Author: kamalyes 501893067@qq.com * @Date: 2025-12-20 20:35:00 * @LastEditors: kamalyes 501893067@qq.com * @LastEditTime: 2025-12-20 20:55:07 * @FilePath: \go-toolbox\pkg\stringx\width.go * @Description: 字符显示宽度计算工具,基于 East Asian Width 标准 * * Copyright (c) 2025 by kamalyes, All Rights Reserved.
Index ¶
- Constants
- func AddPrefixIfNot(str string, prefix string) string
- func AddSuffixIfNot(str string, suffix string) string
- func AppendFieldNameVariants(dst []string, fieldName string) []string
- func CalculateMD5Hash(input string) string
- func CleanEmpty(str string) string
- func Coalesce(s ...string) string
- func CompareIgnoreCase(str1 string, str2 string) int
- func Contains(value string, searchStr string) bool
- func ContainsAll(str string, searchStrs []string) bool
- func ContainsAny(value string, searchStrs []string) bool
- func ContainsAnyIgnoreCase(str string, searchStrs []string) bool
- func ContainsBlank(str string) bool
- func ContainsIgnoreCase(value string, searchStr string) bool
- func ConvertCharacterStyle(input string, caseType CharacterStyle) string
- func Count(str string, searchStr string) int
- func Cut(str string, n int) []string
- func DisplayWidth(s string) int
- func EndWith(str string, suffix string) bool
- func EndWithAny(str string, suffixes []string) bool
- func EndWithAnyIgnoreCase(str string, suffixes []string) bool
- func EndWithIgnoreCase(str string, suffix string) bool
- func Equals(str1 string, str2 string) bool
- func EqualsAny(str1 string, str2 []string) bool
- func EqualsAnyIgnoreCase(str1 string, str2 []string) bool
- func EqualsAt(value string, position int, subStr string) bool
- func EqualsIgnoreCase(str1 string, str2 string) bool
- func EqualsTrimIgnoreCase(str1 string, str2 string) bool
- func ExtractDomainPrefix(fullDomain, primaryDomain string) string
- func ExtractValue(extra string, key string, searchPrefix string) string
- func FastAppendInt(buf []byte, val int) []byte
- func FastFloat(val float64, prec int) string
- func FastFormatTime(buf []byte, t time.Time) []byte
- func FastFormatTimeCompact(buf []byte, t time.Time) []byte
- func FastFormatTimeISO(buf []byte, t time.Time) []byte
- func FastItoa(val int) string
- func Fill(str string, char string, length int, isPre bool) string
- func FillAfter(str string, char string, length int) string
- func FillBefore(str string, char string, length int) string
- func FindKeysByValue(data map[string]string, searchValue string) []string
- func Format(template string, params map[string]interface{}) string
- func GetContainsStr(str string, searchStrs []string) string
- func Hide(str string, startInclude int, endExclude int) string
- func IndexOf(str string, subStr string) int
- func IndexOfByRange(str string, subStr string, start int, end int) int
- func IndexOfByRangeStart(str string, subStr string, start int) int
- func IndexOfIgnoreCase(str string, subStr string) int
- func IndexOfIgnoreCaseByRange(str string, subStr string, start int) int
- func IndexedFormat(template string, params []interface{}) string
- func InsertSpaces(str string, interval int) string
- func IsSubdomain(subdomain, primaryDomain string) bool
- func LastIndexOf(str string, subStr string) int
- func LastIndexOfByRangeStart(str string, subStr string, start int) int
- func LastIndexOfIgnoreCase(str string, subStr string) int
- func Length(str string) int
- func NormalizeFieldName(fieldName string) []string
- func NormalizeSQLDirection(direction, defaultDirection string) string
- func OrdinalIndexOf(str string, subStr string, ordinal int, start ...int) int
- func Pad(input string, minLength int, paddler ...*Paddler) string
- func ParseFieldInt(field string, min, max int) (int, error)
- func ParseFieldIntOrWildcard(field string, wildcard string, min, max int) (int, error)
- func QuoteJSONBytes(str string) []byte
- func Repeat(str string, count int) string
- func RepeatAndJoin(str string, delimiter string, count int) string
- func RepeatByLength(str string, padLen int) string
- func Replace(source string, searchStr string, replacement string, replaceCount int) string
- func ReplaceAll(source string, searchStr string, replacement string) string
- func ReplaceSpecialChars(str string, replaceValue rune) string
- func ReplaceWithIndex(str string, startIndex int, endIndex int, replacedStr string) string
- func ReplaceWithMatcher(str string, regex string, replaceFun func(string) string) string
- func Reverse(str string) string
- func RuneWidth(r rune) int
- func SafeIndexOfByRange(str string, subStr string, options ...func(*searchOptions)) (index int)
- func SanitizeSlug(name string) string
- func Split(str string, separator string) []string
- func SplitAfterMapping[T any](str string, separator string, mapping func(s string) (T, error)) []T
- func SplitByLen(str string, length int) []string
- func SplitDomain(fullDomain, primaryDomain string) (string, string)
- func SplitLimit(str string, separator string, limit int) []string
- func SplitTrim(str string, separator string) []string
- func SplitTrimLimit(str string, separator string, limit int) []string
- func StartWith(str string, prefix string) bool
- func StartWithAny(str string, prefixes []string) bool
- func StartWithAnyIgnoreCase(str string, prefixes []string) bool
- func StartWithIgnoreCase(str string, prefix string) bool
- func SubAfter(str string, separator string, isLastSeparator bool) string
- func SubBefore(str string, separator string, isLastSeparator bool) string
- func SubBetween(str string, before string, after string) string
- func SubBetweenAll(str string, prefix string, suffix string) []string
- func SubString(s string, start, length int) string
- func ToCamelCase(s string) string
- func ToInt(s string) (int, error)
- func ToKebabCase(s string) string
- func ToLower(str string) string
- func ToPascalCase(s string) string
- func ToSliceByte(s string) []byte
- func ToSnakeCase(s string) string
- func ToTitle(str string) string
- func ToUpper(str string) string
- func Trim(str string) string
- func TrimAll(str string, strToRemove string) string
- func TrimAllLineBreaks(str string) string
- func TrimAny(str string, strsToRemove []string) string
- func TrimEnd(str string) string
- func TrimEndNewlines(str string) string
- func TrimNewlines(str string) string
- func TrimPrefix(str string, prefix string) string
- func TrimPrefixIgnoreCase(str string, prefix string) string
- func TrimProtocol(url string) string
- func TrimStart(str string) string
- func TrimStartNewlines(str string) string
- func TrimSuffix(str string, suffix string) string
- func TrimSuffixIgnoreCase(str string, suffix string) string
- func TrimSymbols(str string) string
- func Truncate(str string, maxBytes int) string
- func TruncateAppendEllipsis(str string, maxChars int) string
- func TruncateMessage(content string, maxLen int) string
- func UniqueStringSlice(slice []string) []string
- func WithEnd(end int) func(*searchOptions)
- func WithStart(start int) func(*searchOptions)
- type CharacterStyle
- type PadPosition
- type Paddler
- type StringX
- func (s *StringX) AddPrefixIfNotChain(prefix string) *StringX
- func (s *StringX) AddSuffixIfNotChain(prefix string) *StringX
- func (s *StringX) CleanEmptyChain() *StringX
- func (s *StringX) CoalesceChain(strs ...string) *StringX
- func (s *StringX) CompareIgnoreCaseChain(str2 string) int
- func (s *StringX) ContainsAllChain(searchStrs []string) bool
- func (s *StringX) ContainsAnyChain(searchStrs []string) bool
- func (s *StringX) ContainsAnyIgnoreCaseChain(searchStrs []string) bool
- func (s *StringX) ContainsBlankChain() bool
- func (s *StringX) ContainsChain(searchStr string) bool
- func (s *StringX) ContainsIgnoreCaseChain(searchStr string) bool
- func (s *StringX) ConvertCharacterStyleChain(caseType CharacterStyle) *StringX
- func (s *StringX) CountChain(searchStr string) int
- func (s *StringX) DisplayWidthChain() int
- func (s *StringX) EqualsAnyChain(strs []string) bool
- func (s *StringX) EqualsAnyIgnoreCaseChain(strs []string) bool
- func (s *StringX) EqualsAtChain(position int, subStr string) bool
- func (s *StringX) EqualsChain(str2 string) bool
- func (s *StringX) EqualsIgnoreCaseChain(str2 string) bool
- func (s *StringX) EqualsTrimIgnoreCaseChain(str2 string) bool
- func (s *StringX) FillAfterChain(char string, length int) *StringX
- func (s *StringX) FillBeforeChain(char string, length int) *StringX
- func (s *StringX) FormatChain(params map[string]interface{}) *StringX
- func (s *StringX) GetContainsStrChain(searchStrs []string) string
- func (s *StringX) HideChain(startInclude int, endExclude int) *StringX
- func (s *StringX) IndexedFormatChain(params []interface{}) *StringX
- func (s *StringX) InsertSpacesChain(interval int) *StringX
- func (s *StringX) IsBlankChain() bool
- func (s *StringX) LengthChain() int
- func (s *StringX) RepeatAndJoinChain(delimiter string, count int) *StringX
- func (s *StringX) RepeatByLengthChain(padLen int) *StringX
- func (s *StringX) RepeatChain(count int) *StringX
- func (s *StringX) ReplaceAllChain(searchStr string, replacement string) *StringX
- func (s *StringX) ReplaceChain(searchStr string, replacement string, replaceCount int) *StringX
- func (s *StringX) ReplaceSpecialCharsChain(replaceValue rune) *StringX
- func (s *StringX) ReplaceWithMatcherChain(regex string, replaceFun func(string) string) *StringX
- func (s *StringX) ReverseChain() *StringX
- func (s *StringX) SanitizeSlugChain() *StringX
- func (s *StringX) SubAfterChain(separator string, isLastSeparator bool) *StringX
- func (s *StringX) SubBeforeChain(separator string, isLastSeparator bool) *StringX
- func (s *StringX) SubBetweenChain(before string, after string) *StringX
- func (s *StringX) SubStringChain(start, length int) *StringX
- func (s *StringX) ToLowerChain() *StringX
- func (s *StringX) ToTitleChain() *StringX
- func (s *StringX) ToUpperChain() *StringX
- func (s *StringX) TrimAllChain(strToRemove string) *StringX
- func (s *StringX) TrimAllLineBreaksChain() *StringX
- func (s *StringX) TrimAnyChain(strsToRemove []string) *StringX
- func (s *StringX) TrimChain() *StringX
- func (s *StringX) TrimEndChain() *StringX
- func (s *StringX) TrimEndNewlinesChain() *StringX
- func (s *StringX) TrimNewlinesChain() *StringX
- func (s *StringX) TrimPrefixChain(prefix string) *StringX
- func (s *StringX) TrimPrefixIgnoreCaseChain(prefix string) *StringX
- func (s *StringX) TrimProtocolChain() *StringX
- func (s *StringX) TrimStartChain() *StringX
- func (s *StringX) TrimStartNewlinesChain() *StringX
- func (s *StringX) TrimSuffixChain(suffix string) *StringX
- func (s *StringX) TrimSuffixIgnoreCaseChain(suffix string) *StringX
- func (s *StringX) TrimSymbolsChain() *StringX
- func (s *StringX) TruncateAppendEllipsisChain(maxBytes int) *StringX
- func (s *StringX) TruncateChain(maxBytes int) *StringX
- func (s *StringX) Value() string
Constants ¶
const MaxFieldNameVariants = 5
MaxFieldNameVariants 变体个数上限:原始名称加四种命名风格
const RootDomainPrefix = "@"
RootDomainPrefix 根域名前缀标识符(用于DNS记录等场景)
Variables ¶
This section is empty.
Functions ¶
func AddPrefixIfNot ¶
AddPrefixIfNot 如果给定字符串不是以prefix开头的,在开头补充 prefix
func AddSuffixIfNot ¶
AddSuffixIfNot 如果给定字符串不是以suffix结尾的,在尾部补充 suffix
func AppendFieldNameVariants ¶
AppendFieldNameVariants 把字段名的各种命名风格变体追加到 dst,返回追加后的切片
顺序与 NormalizeFieldName 一致,dst 为空时第一个元素就是原始名称 供调用方用栈上数组承接,避免为一个用完即弃的切片分配:
var buf [stringx.MaxFieldNameVariants]string
for _, name := range stringx.AppendFieldNameVariants(buf[:0], fieldName) {
...
}
pkg/safe 的链式取值就在热路径上这么用:先按原名直取,未命中才算变体
[EN] Appends the naming-style variants of a field name to dst in the same order as NormalizeFieldName, letting callers back dst with a stack array instead of allocating a slice they discard immediately. pkg/safe's chained access uses it exactly that way on its hot path
func CalculateMD5Hash ¶
CalculateMD5Hash 计算string md5 hash值
func CompareIgnoreCase ¶
CompareIgnoreCase 比较两个字符串,用于排序(大小写不敏感)
func ContainsAll ¶
ContainsAll 检查指定字符串中是否含给定的所有字符串
func ContainsAny ¶
ContainsAny 查找指定字符串是否包含指定字符串列表中的任意一个字符串
func ContainsAnyIgnoreCase ¶
ContainsAnyIgnoreCase 找指定字符串是否包含指定字符串列表中的任意一个字符串(忽略大小写)
func ContainsBlank ¶
ContainsBlank 给定字符串是否包含空白符(空白符包括空格、制表符、全角空格和不间断空格)
func ContainsIgnoreCase ¶
ContainsIgnoreCase 指定字符是否在字符串中出现过(忽略大小写)
func ConvertCharacterStyle ¶
func ConvertCharacterStyle(input string, caseType CharacterStyle) string
ConvertCharacterStyle 根据指定的 CharacterStyle 将字符串转换为相应的格式
func DisplayWidth ¶
DisplayWidth 计算字符串的显示宽度 基于 East Asian Width 标准,考虑中文、日文、韩文、Emoji 等宽字符
func EndWithAny ¶
EndWithAny 给定字符串是否以任何一个字符串结尾 给定字符串和数组为空都返回false
func EndWithAnyIgnoreCase ¶
EndWithAnyIgnoreCase 给定字符串是否以任何一个字符串结尾(忽略大小写) 给定字符串和数组为空都返回false
func EndWithIgnoreCase ¶
EndWithIgnoreCase 是否以指定字符串结尾,忽略大小写
func EqualsAnyIgnoreCase ¶
EqualsAnyIgnoreCase 给定字符串是否与提供的中任一字符串相同(忽略大小写)
func EqualsIgnoreCase ¶
EqualsIgnoreCase 比较2个字符串(大小写不敏感)
func EqualsTrimIgnoreCase ¶
EqualsTrimIgnoreCase 去除首尾空白后忽略大小写比较字符串
func ExtractDomainPrefix ¶
ExtractDomainPrefix 从完整域名中提取前缀 示例: ExtractDomainPrefix("www.example.com", "example.com") -> "www" 示例: ExtractDomainPrefix("example.com", "example.com") -> "@"
func ExtractValue ¶
ExtractValue 从给定的字符串中提取指定的键的值
func FastFormatTimeCompact ¶
FastFormatTimeCompact 格式化时间到缓冲区,紧凑格式
func FastFormatTimeISO ¶
FastFormatTimeISO 格式化时间到缓冲区,ISO格式
func FillBefore ¶
FillBefore 将已有字符串填充为规定长度,如果已有字符串超过这个长度则返回这个字符串
func FindKeysByValue ¶
FindKeysByValue 函数
func Format ¶
Format 通过map中的参数 格式化字符串 map = {a: "aValue", b: "bValue"} format("{a} and {b}", map) ---=》 aValue and bValue
func GetContainsStr ¶
GetContainsStr 查找指定字符串是否包含指定字符串列表中的任意一个字符串,如果包含返回找到的第一个字符串 不存在返回空串
func IndexOfByRange ¶
IndexOfByRange 指定范围内查找指定字符
func IndexOfByRangeStart ¶
IndexOfByRangeStart 指定范围内查找指定字符
func IndexOfIgnoreCase ¶
IndexOfIgnoreCase 返回字符在原始字符串的下标(大小写不敏感)
func IndexOfIgnoreCaseByRange ¶
IndexOfIgnoreCaseByRange 从指定下标开始,返回在字符串中的下标 (大小不敏感)
func IndexedFormat ¶
IndexedFormat 有序的格式化文本,使用{number}做为占位符 通常使用:format("this is {0} for {1}", "a", "b") =》 this is a for b
性能:使用 strconv.Itoa + 字符串拼接构造占位符,避免 fmt.Sprintf 反射开销
func LastIndexOfByRangeStart ¶
LastIndexOfByRangeStart 从指定下标开始,返回最后出现指定字符串的下标
func LastIndexOfIgnoreCase ¶
LastIndexOfIgnoreCase 返回最后出现指定字符串的下标(大小写不敏感)
func NormalizeFieldName ¶
NormalizeFieldName 规范化字段名,返回所有可能的命名风格变体 支持的输入格式:camelCase, PascalCase, snake_case, kebab-case 返回顺序:原始名称、PascalCase、camelCase、snake_case、kebab-case
重复的变体会被跳过原先逐项手写去重条件,kebab 只和原名、snake 比, 于是 "X1" 这类输入会得到 ["X1","x1","x1"]——调用方按变体逐个查找时, 同一个名字要查两遍,map 多一次哈希,结构体多一次 FieldByName 全字段扫描
[EN] Duplicate variants are skipped. The original hand-wrote its dedup conditions and compared kebab case only against the original and snake case, so an input like "X1" produced ["X1","x1","x1"] and a caller iterating the variants looked the same name up twice
func NormalizeSQLDirection ¶
NormalizeSQLDirection 规范化排序方向,仅允许 "ASC" 或 "DESC"(不区分大小写) direction: 输入的排序方向 defaultDirection: 默认方向(当输入无效时) 返回规范化后的排序方向(大写)
func OrdinalIndexOf ¶
OrdinalIndexOf 返回字符串 subStr 在字符串 str 中第 ordinal 次出现的位置。 如果 str="" 或 subStr=" 或 ordinal≥0 则返回-1
func ParseFieldInt ¶
ParseFieldInt 解析字段,只支持单数字,不支持通配符。
func ParseFieldIntOrWildcard ¶
ParseFieldIntOrWildcard 解析字段,支持单个数字或指定的通配符字符串。 返回值: - 当字段等于 wildcard 时,返回 -1,表示任意值。 - 当字段为数字时,返回对应整数。 - 当字段无效或超出范围时,返回错误。
func QuoteJSONBytes ¶
QuoteJSONBytes 将字符串按 JSON 字符串规则转义,并返回带双引号的字节切片
func RepeatAndJoin ¶
RepeatAndJoin 重复某个字符串并通过分界符连接
func RepeatByLength ¶
RepeatByLength 重复某个字符串到指定长度
func ReplaceAll ¶
ReplaceAll 替换字符串
func ReplaceSpecialChars ¶
ReplaceSpecialChars 去掉特殊符号、转为自定义
func ReplaceWithIndex ¶
ReplaceWithIndex 按照指定区间替换字符串 startIndex 开始位置(包含) endIndex 结束位置(不包含)
func RuneWidth ¶
RuneWidth 返回单个 rune 的显示宽度 基于 East Asian Width 标准和终端显示规则: - ASCII 可见字符(0x20-0x7E)占 1 列 - 控制字符(0x00-0x1F, 0x7F-0x9F)占 0 列 - CJK 字符(中文、日文、韩文)占 2 列 - Emoji 表情符号占 2 列 - 其他字符默认占 1 列
func SafeIndexOfByRange ¶
SafeIndexOfByRange 在指定范围内查找指定字符,避免下标溢出
func SanitizeSlug ¶
SanitizeSlug 格式化字符串为 URL 友好的 slug 格式 规则:小写、去除空格、只保留字母数字和连字符、去除连续连字符、去除首尾连字符 适用场景:项目名称、域名、URL slug 等
示例:
SanitizeSlug("Hello World!") // "hello-world"
SanitizeSlug("My--Project__123") // "my-project-123"
SanitizeSlug(" -test- ") // "test"
func SplitAfterMapping ¶
SplitAfterMapping 切分字符串,切分之后通过mapping转换并返回
func SplitDomain ¶
SplitDomain 分割域名为前缀和主域名 返回: prefix, primaryDomain 示例: SplitDomain("www.api.example.com", "example.com") -> "www.api", "example.com"
func SplitLimit ¶
SplitLimit 分割字符串,限制分片数
func SplitTrimLimit ¶
SplitTrimLimit 切分字符串,去除切分后每个元素两边的空白符,去除空白项,限制分片数
func StartWithAny ¶
StartWithAny 给定字符串是否以任何一个字符串开始; 给定字符串和数组为空都返回false
func StartWithAnyIgnoreCase ¶
StartWithAnyIgnoreCase 给定字符串是否以任何一个字符串开始(忽略大小写) 给定字符串和数组为空都返回false
func StartWithIgnoreCase ¶
StartWithIgnoreCase 字符串是否以给定字符开始-忽略大小写
func SubBefore ¶
SubBefore 截取分隔字符串之前的字符串,不包括分隔字符串 isLastSeparator - 是否查找最后一个分隔字符串(多次出现分隔字符串时选取最后一个),true为选取最后一个
func SubBetween ¶
SubBetween 截取指定字符串中间部分,不包括标识字符串
func SubBetweenAll ¶
SubBetweenAll 截取指定字符串多段中间部分,不包括标识字符串
func SubString ¶
SubString 截取字符串,从 start 位置开始,截取 length 长度 如果 start 超出范围或为负数,返回空字符串 如果 length 超出剩余长度,截取到字符串末尾
func ToCamelCase ¶
ToCamelCase 将字符串转换为驼峰命名法(首字母小写,例如:userName) 支持输入格式:PascalCase, snake_case, kebab-case
func ToKebabCase ¶
ToKebabCase 将字符串转换为短横线命名法(例如:user-name) 支持输入格式:camelCase, PascalCase, snake_case
func ToPascalCase ¶
ToPascalCase 将字符串转换为帕斯卡命名法(首字母大写的驼峰,例如:UserName) 支持输入格式:camelCase, snake_case, kebab-case, 普通字符串(带空格) 增强版:合并了原 toStudlyCase 的逻辑,统一处理所有分隔符
func ToSnakeCase ¶
ToSnakeCase 将字符串转换为蛇形命名法(例如:user_name) 支持输入格式:camelCase, PascalCase, kebab-case
func TrimAllLineBreaks ¶
TrimAllLineBreaks 去除所有换行符,包括:\r \n
func TrimPrefixIgnoreCase ¶
TrimPrefixIgnoreCase 忽略大小写去掉指定前缀
func TrimProtocol ¶
TrimProtocol 移除URL的协议前缀 (支持 http://, https://, ftp://, ws://, wss://, file:// 等所有协议),并移除尾部空格
func TrimStartNewlines ¶
TrimStartNewlines 除去字符串开头的换行符(\n 和 \r)
func TrimSuffixIgnoreCase ¶
TrimSuffixIgnoreCase 去掉指定后缀(忽略大小写)
func TruncateAppendEllipsis ¶
TruncateAppendEllipsis 截断字符串,使用不超过maxChars字符长度。截断后自动追加省略号(...) 用于存储数据库varchar且编码为UTF-8的字段
func TruncateMessage ¶
TruncateMessage 截断消息内容用于日志显示
func UniqueStringSlice ¶
Types ¶
type CharacterStyle ¶
type CharacterStyle int
const ( SnakeCharacterStyle CharacterStyle = iota // 表示蛇形命名法(例如:hello_world) StudlyCharacterStyle // 表示每个单词首字母大写的风格(例如:HelloWorld) CamelCharacterStyle // 表示驼峰命名法(例如:helloWorld) KebabCharacterStyle // 表示短横线命名法(例如:hello-world) PascalCharacterStyle // 表示帕斯卡命名法(例如:HelloWorld,同 StudlyCharacterStyle) )
type Paddler ¶
type Paddler struct {
Position PadPosition
}
type StringX ¶
type StringX struct {
// contains filtered or unexported fields
}
StringX 是一个结构体,用于封装字符串值并提供操作方法。
func (*StringX) AddPrefixIfNotChain ¶
AddPrefixIfNotChain 如果给定字符串不是以prefix开头的(链式调用)
func (*StringX) AddSuffixIfNotChain ¶
AddSuffixIfNotChain 如果给定字符串不是以suffix结尾的,在尾部补充 suffix(链式调用)
func (*StringX) CleanEmptyChain ¶
CleanEmptyChain 清除空白串(链式调用)
func (*StringX) CoalesceChain ¶
CoalesceChain 高性能字符串拼接(链式调用)
func (*StringX) CompareIgnoreCaseChain ¶
CompareIgnoreCaseChain 比较两个字符串(链式调用,用于排序,忽略大小写)
func (*StringX) ContainsAllChain ¶
ContainsAllChain 检查指定字符串中是否含给定的所有字符串(链式调用)
func (*StringX) ContainsAnyChain ¶
ContainsAnyChain 查找指定字符串是否包含指定字符串列表中的任意一个字符串(链式调用)
func (*StringX) ContainsAnyIgnoreCaseChain ¶
ContainsAnyIgnoreCaseChain 找指定字符串是否包含指定字符串列表中的任意一个字符串(链式调用,忽略大小写)
func (*StringX) ContainsBlankChain ¶
ContainsBlankChain 给定字符串是否包含空白符(链式调用)
func (*StringX) ContainsChain ¶
ContainsChain 指定字符是否在字符串中出现过(链式调用)
func (*StringX) ContainsIgnoreCaseChain ¶
ContainsIgnoreCaseChain 指定字符是否在字符串中出现过(链式调用,忽略大小写)
func (*StringX) ConvertCharacterStyleChain ¶
func (s *StringX) ConvertCharacterStyleChain(caseType CharacterStyle) *StringX
ConvertCharacterStyleChain 根据指定的 CharacterStyle 将字符串转换为相应的格式(链式调用)
func (*StringX) CountChain ¶
CountChain 统计指定内容中包含指定字符串的数量(链式调用)
func (*StringX) DisplayWidthChain ¶
DisplayWidthChain 计算字符串的显示宽度(链式调用)
func (*StringX) EqualsAnyChain ¶
EqualsAnyChain 给定字符串是否与提供的中任一字符串相同(链式调用)
func (*StringX) EqualsAnyIgnoreCaseChain ¶
EqualsAnyIgnoreCaseChain 给定字符串是否与提供的中任一字符串相同(链式调用,忽略大小写)
func (*StringX) EqualsAtChain ¶
EqualsAtChain 字符串指定位置的字符是否与给定字符相同(链式调用)
func (*StringX) EqualsChain ¶
EqualsChain 比较2个字符串(链式调用)
func (*StringX) EqualsIgnoreCaseChain ¶
EqualsIgnoreCaseChain 比较2个字符串(链式调用,忽略大小写)
func (*StringX) EqualsTrimIgnoreCaseChain ¶
EqualsTrimIgnoreCaseChain 去除首尾空白后忽略大小写比较字符串(链式调用)
func (*StringX) FillAfterChain ¶
FillAfterChain 将已有字符串填充为规定长度(链式调用)
func (*StringX) FillBeforeChain ¶
FillBeforeChain 将已有字符串填充为规定长度(链式调用)
func (*StringX) FormatChain ¶
FormatChain 通过map中的参数格式化字符串(链式调用)
func (*StringX) GetContainsStrChain ¶
GetContainsStrChain 查找指定字符串是否包含指定字符串列表中的任意一个字符串(链式调用)
func (*StringX) IndexedFormatChain ¶
IndexedFormatChain 有序的格式化文本(链式调用)
func (*StringX) InsertSpacesChain ¶
InsertSpacesChain 插入空值(链式调用)
func (*StringX) IsBlankChain ¶
IsBlankChain 判断字符串去除首尾空白后是否为空(链式调用) 已迁移至 go-toolbox/pkg/argus:validate.IsBlankString
func (*StringX) RepeatAndJoinChain ¶
RepeatAndJoinChain 重复某个字符串并通过分界符连接(链式调用)
func (*StringX) RepeatByLengthChain ¶
RepeatByLengthChain 重复某个字符串到指定长度(链式调用)
func (*StringX) RepeatChain ¶
RepeatChain 重复字符串(链式调用)
func (*StringX) ReplaceAllChain ¶
ReplaceAllChain 替换字符串(链式调用)
func (*StringX) ReplaceChain ¶
ReplaceChain 替换字符串(链式调用)
func (*StringX) ReplaceSpecialCharsChain ¶
ReplaceSpecialCharsChain 去掉特殊符号、转为自定义(链式调用)
func (*StringX) ReplaceWithMatcherChain ¶
ReplaceWithMatcherChain 通过正则表达式替换字符串(链式调用)
func (*StringX) SanitizeSlugChain ¶
SanitizeSlugChain 格式化字符串为 URL 友好的 slug 格式(链式调用)
func (*StringX) SubAfterChain ¶
SubAfterChain 截取分隔字符串之后的字符串(链式调用)
func (*StringX) SubBeforeChain ¶
SubBeforeChain 截取分隔字符串之前的字符串(链式调用)
func (*StringX) SubBetweenChain ¶
SubBetweenChain 截取指定字符串中间部分(链式调用)
func (*StringX) SubStringChain ¶
SubStringChain 截取字符串(链式调用)
func (*StringX) ToLowerChain ¶
ToLowerChain 将字符串转换为小写(链式调用)
func (*StringX) ToTitleChain ¶
ToTitleChain 将字符串转换为标题格式(链式调用)
func (*StringX) ToUpperChain ¶
ToUpperChain 将字符串转换为大写(链式调用)
func (*StringX) TrimAllChain ¶
TrimAllChain 移除字符串中所有给定字符串(链式调用)
func (*StringX) TrimAllLineBreaksChain ¶
TrimAllLineBreaksChain 去除所有换行符(链式调用)
func (*StringX) TrimAnyChain ¶
TrimAnyChain 移除字符串中所有给定的多个字符串(链式调用)
func (*StringX) TrimEndChain ¶
TrimEndChain 除去字符串尾部的空白(链式调用)
func (*StringX) TrimEndNewlinesChain ¶
TrimEndNewlinesChain 除去字符串结尾的换行符(链式调用)
func (*StringX) TrimNewlinesChain ¶
TrimNewlinesChain 除去字符串首尾的换行符(链式调用)
func (*StringX) TrimPrefixChain ¶
TrimPrefixChain 去掉指定前缀(链式调用)
func (*StringX) TrimPrefixIgnoreCaseChain ¶
TrimPrefixIgnoreCaseChain 忽略大小写去掉指定前缀(链式调用)
func (*StringX) TrimProtocolChain ¶
TrimProtocolChain 移除URL的协议前缀(链式调用)
func (*StringX) TrimStartChain ¶
TrimStartChain 除去字符串头部的空白(链式调用)
func (*StringX) TrimStartNewlinesChain ¶
TrimStartNewlinesChain 除去字符串开头的换行符(链式调用)
func (*StringX) TrimSuffixChain ¶
TrimSuffixChain 去掉指定后缀(链式调用)
func (*StringX) TrimSuffixIgnoreCaseChain ¶
TrimSuffixIgnoreCaseChain 去掉指定后缀(链式调用,忽略大小写)
func (*StringX) TrimSymbolsChain ¶
TrimSymbolsChain 使用正则表达式去掉字符串中的所有符号(链式调用)
func (*StringX) TruncateAppendEllipsisChain ¶
TruncateAppendEllipsisChain 截断字符串(链式调用)
func (*StringX) TruncateChain ¶
TruncateChain 截断字符串(链式调用)