strUtil

package
v0.0.0-...-e50112c Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 22, 2024 License: BSD-3-Clause Imports: 17 Imported by: 3

README

字符串操作

  • case: 首字母大小写转换、在 CamelCase、SnakeCase、PascalCase、KebabCase 几种命名格式之间做转换。
  • join: 扩展 strings.Join,允许将 []int、[]interface 类型拼接为字符串。
  • rand: 随机字符串生成
  • split: 扩展 strings.Split,允许将字符串拆分为 []int,且允许设置是否过滤空字符串等更多参数。
  • stringBuilder: 当需要频繁拼接字符串时,可用此类代替字符串相加操作。备注:如果只是少量字符串的拼接,建议仍使用字符串相加,因少量拼接的情况下两者性能并无差别。
  • 其他常用函数的封装

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func CamelToLowerKebab

func CamelToLowerKebab(s string) string

将驼峰命名法转换为小写中划线分割格式

func CamelToSnake

func CamelToSnake(s string) string

将驼峰命名法转换为小写下划线分割格式

func CamelToUpperKebab

func CamelToUpperKebab(s string) string

将驼峰命名法转换为首字母大写中划线分割格式(Http Header 格式)

func CutHeadIfOverflow

func CutHeadIfOverflow(str string, maxLen uint64) string

CutHeadIfOverflow 当字符串字节长度超过maxLen时从头开始按字符集截取字符直到等于或小于 example: str := "12你好" CutHeadIfOverflow(str,6)>>> 你好 CutHeadIfOverflow(str,5)>>> 好

func CutTailIfOverflow

func CutTailIfOverflow(str string, maxLen uint64) string

CutTailIfOverflow 当字符串字节长度超过maxLen时从尾部开始按字符集截取字符直到等于或小于 example: str := "12你好" CutHeadIfOverflow(str,6)>>> 12你 CutHeadIfOverflow(str,4)>>> 12

func For

func For(in []string, f func(int))

func Join

func Join(slice interface{}, sep string, f ...func(i int) string) string

func JoinIf

func JoinIf(slice interface{}, sep string, f func(i int) (string, bool)) string

func JoinInt

func JoinInt(a []int, sep string, f ...func(i int, v int) string) string

func JoinInt32

func JoinInt32(a []int32, sep string, f ...func(i int, v int32) string) string

func JoinInt64

func JoinInt64(a []int64, sep string, f ...func(i int, v int64) string) string

func JoinStr

func JoinStr(a []string, sep string, f func(i int, v string) string) string

func KebabToCamel

func KebabToCamel(s string) string

将中划线分割格式转换为驼峰命名法

func KebabToSnake

func KebabToSnake(s string) string

将中划线分割格式转换为下划线小写格式

func LcFirst

func LcFirst(s string) string

首字母小写

func Map

func Map(in []string, f func(i int, s string) string) []string

func Md5

func Md5(s string) string

func PascalToSnake

func PascalToSnake(s string) string

将 Pascal 命名法转换为小写下划线分割格式

func PregSplitToInt

func PregSplitToInt(s, pattern string) ([]int, error)

func PregSplitToInt64

func PregSplitToInt64(s, pattern string) ([]int64, error)

func PregSplitToInt64NoError

func PregSplitToInt64NoError(s, pattern string) []int64

func PregSplitToIntNoError

func PregSplitToIntNoError(s, pattern string) []int

func Rand

func Rand(length int) string

生成随机字符串(默认使用小写字母和数字)

在一般场景下,可以使用随机字符串代替 UUID(UUID 太长了):

UUID(Universally Unique Identifier)中的 Universally 就表名了他对重复率的目标:每秒产生10亿笔UUID,100年后产生一次重复的机率是50%。
实际场景中,我们只需要使 “重复机率小到可以忽略不计” 即可,即可认为其是 “事实唯一” 的。

注意:

随机函数并不保证唯一,根据随机长度不同,平均无冲突次数不同。可以根据业务场景选择适当的随机长度。
平均无冲突次数 是指:平均执行多少次 Rand 方法,会产生一次相同的随即结果。
由于随机性,平均无冲突次数 只是一个参考值,并不是绝对值。

重复机率计算:

随机字符串默认由 0-9、a-z 组成(可通过重载方法更改 Bucket)
重复机率:每一位有 36 种可能,n 位 对应 36^n 种可能,平均无冲突次数为 36^(n/2)。
  6 位:平均无冲突次数为 36^3 = 46656
  8 位:平均无冲突次数为 36^4 = 1679616 = 170万
  10 位:平均无冲突次数为 36^5 = 60466176 = 6000万
  12 位:平均无冲突次数为 36^6 = 2176782336 = 21亿
  14 位:平均无冲突次数为 36^7 = 78364164096 = 780亿
  16 位:平均无冲突次数为 36^8 = 2821109907456 = 2.8万亿

func RandB

func RandB(length int, bucket string) string

根据指定的字符集生成随机字符串。 重复机率:每一位有 len(bucket) 种可能,长度 n 就有 len(bucket)^n 种可能。

func RandL

func RandL(length int) string

生成由小写字母组成的随机字符串。

注意:

随机函数并不保证唯一,请参考 Rand 方法的备注。

重复机率:每一位有 26 种可能,n 位 对应 26^n 种可能,平均无冲突次数为 26^(n/2)。

6 位:平均无冲突次数为 26^3 = 17576
8 位:平均无冲突次数为 26^4 = 456976 = 45万
10 位:平均无冲突次数为 26^5 = 11881376 = 1200万
12 位:平均无冲突次数为 26^6 = 308915776 = 3亿
14 位:平均无冲突次数为 26^7 = 8031810176 = 80亿
16 位:平均无冲突次数为 26^8 = 208827064576 = 2000亿

func RandLN

func RandLN(length int) string

生成由小写字母和数字组成的随机字符串。 重复机率:每一位有 36 种可能,n 位 对应 36^n 种可能,平均无冲突次数为 36^(n/2)。

6 位:平均无冲突次数为 36^3 = 46656
8 位:平均无冲突次数为 36^4 = 1679616 = 170万
10 位:平均无冲突次数为 36^5 = 60466176 = 6000万
12 位:平均无冲突次数为 36^6 = 2176782336 = 21亿
14 位:平均无冲突次数为 36^7 = 78364164096 = 780亿
16 位:平均无冲突次数为 36^8 = 2821109907456 = 2.8万亿

func RandU

func RandU(length int) string

生成由大写字母组成的随机字符串。 重复机率:每一位有 26 种可能,n 位 对应 26^n 种可能,平均无冲突次数为 26^(n/2)。

6 位:平均无冲突次数为 26^3 = 17576
8 位:平均无冲突次数为 26^4 = 456976 = 45万
10 位:平均无冲突次数为 26^5 = 11881376 = 1200万
12 位:平均无冲突次数为 26^6 = 308915776 = 3亿
14 位:平均无冲突次数为 26^7 = 8031810176 = 80亿
16 位:平均无冲突次数为 26^8 = 208827064576 = 2000亿

func RandULN

func RandULN(length int) string

生成由大写字母、小写字母和数字组成的随机字符串。 重复机率:每一位有 62 种可能,n 位 对应 62^n 种可能,平均无冲突次数为 62^(n/2)。

6 位:平均无冲突次数为 62^3 = 238328 = 23万
8 位:平均无冲突次数为 62^4 = 14776336 = 1400万
10 位:平均无冲突次数为 62^5 = 916132832 = 9亿
12 位:平均无冲突次数为 62^6 = 56800235584 = 560亿
14 位:平均无冲突次数为 62^7 = 3521614606208 = 3.5万亿

func RandUN

func RandUN(length int) string

生成由大写字母和数字组成的随机字符串。 重复机率:每一位有 36 种可能,n 位 对应 36^n 种可能,平均无冲突次数为 36^(n/2)。

6 位:平均无冲突次数为 36^3 = 46656
8 位:平均无冲突次数为 36^4 = 1679616 = 170万
10 位:平均无冲突次数为 36^5 = 60466176 = 6000万
12 位:平均无冲突次数为 36^6 = 2176782336 = 21亿
14 位:平均无冲突次数为 36^7 = 78364164096 = 780亿
16 位:平均无冲突次数为 36^8 = 2821109907456 = 2.8万亿

func Replace

func Replace(str string, replace map[string]string) string

------------------------------------------------------------------------------

func Sha1

func Sha1(s string) string

func SnakeToCamel

func SnakeToCamel(s string) string

下划线小写格式转换为驼峰命名法

func SnakeToPascal

func SnakeToPascal(s string) string

下划线小写格式转换为 Pascal 格式

func SnakeToUpperKebab

func SnakeToUpperKebab(s string) string

下划线小写格式转换为首字母大写中划线分割格式(Http Header 格式)

func Split

func Split(s, sep string, ignoreEmpty bool, format ...func(string) string) []string

func Split2

func Split2(s, sep string, ignoreEmpty bool, f ...func(string) string) (a string, b string)

func Split3

func Split3(s, sep string, ignoreEmpty bool, f ...func(string) string) (a string, b string, c string)

func SplitN

func SplitN(s, sep string, ignoreEmpty bool, limit int, format ...func(string) string) []string

func SplitToInt

func SplitToInt(s, sep string, ignoreEmpty ...bool) ([]int, error)

func SplitToInt64

func SplitToInt64(s, sep string, ignoreEmpty ...bool) ([]int64, error)

func SplitToInt64NoError

func SplitToInt64NoError(s, sep string, ignoreEmpty ...bool) []int64

func SplitToIntNoError

func SplitToIntNoError(s, sep string, ignoreEmpty ...bool) []int

func ToInt32Arr

func ToInt32Arr(a []string) (val []int32, err error)

func ToInt64Arr

func ToInt64Arr(a []string) (val []int64, err error)

func ToIntArr

func ToIntArr(a []string) (val []int, err error)

func UcFirst

func UcFirst(s string) string

首字母大写

func UrlDecode

func UrlDecode(s string) string

------------------------------------------------------------------------------ encode & decode

Types

type Builder

type Builder struct {
	// contains filtered or unexported fields
}

func NewBuilder

func NewBuilder(str ...string) *Builder

func (*Builder) Append

func (this *Builder) Append(str ...string) *Builder

func (*Builder) Appendf

func (this *Builder) Appendf(format string, a ...interface{}) *Builder

func (*Builder) Clear

func (this *Builder) Clear()

func (*Builder) Empty

func (this *Builder) Empty() bool

func (*Builder) Reset

func (this *Builder) Reset() *Builder

func (*Builder) String

func (this *Builder) String() string

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL