gstr 提供了强大便捷的文本处理组件,组件内置了大量常用的字符串处理方法,比较于 Golang 标准库更加全面丰富,可应对绝大部分业务场景。

使用方式

  1. import "github.com/gogf/gf/v2/text/gstr"

接口文档

https://pkg.go.dev/github.com/gogf/gf/v2/text/gstr

字符串处理-gstr - 图1提示

以下常用方法列表,文档更新可能滞后于代码新特性,更多的方法及示例请参考代码文档: https://pkg.go.dev/github.com/gogf/gf/v2/text/gstr

字符串判断

IsNumeric

  • 说明:IsNumeric 验证字符串 s 是否为数字。

  • 格式:

  1. IsNumeric(s string) bool
  • 示例:
  1. func ExampleIsNumeric() {
  2. fmt.Println(gstr.IsNumeric("88"))
  3. fmt.Println(gstr.IsNumeric("3.1415926"))
  4. fmt.Println(gstr.IsNumeric("abc"))
  5. // Output:
  6. // true
  7. // true
  8. // false
  9. }

字符串长度

LenRune

  • 说明:LenRune 返回 unicode 字符串长度。

  • 格式:

  1. LenRune(str string) int
  • 示例:
  1. func ExampleLenRune() {
  2. var (
  3. str = `GoFrame框架`
  4. result = gstr.LenRune(str)
  5. )
  6. fmt.Println(result)
  7. // Output:
  8. // 9
  9. }

字符串创建

Repeat

  • 说明:Repeat 返回一个由 input 重复 multiplier 次后组成的新字符串。

  • 格式:

  1. Repeat(input string, multiplier int) string
  • 示例:
  1. func ExampleRepeat() {
  2. var (
  3. input = `goframe `
  4. multiplier = 3
  5. result = gstr.Repeat(input, multiplier)
  6. )
  7. fmt.Println(result)
  8. // Output:
  9. // goframe goframe goframe
  10. }

大小写转换

ToLower

  • 说明:ToLowers 中所有 Unicode 字符都变为小写并返回其副本。

  • 格式:

  1. ToLower(s string) string
  • 示例:
  1. func ExampleToLower() {
  2. var (
  3. s = `GOFRAME`
  4. result = gstr.ToLower(s)
  5. )
  6. fmt.Println(result)
  7. // Output:
  8. // goframe
  9. }

ToUpper

  • 说明:ToUppers 中所有 Unicode 字符都变为大写并返回其副本。

  • 格式:

  1. ToUpper(s string) string
  • 示例:
  1. func ExampleToUpper() {
  2. var (
  3. s = `goframe`
  4. result = gstr.ToUpper(s)
  5. )
  6. fmt.Println(result)
  7. // Output:
  8. // GOFRAME
  9. }

UcFirst

  • 说明:UcFirsts 中首字符变为大写并返回其副本。

  • 格式:

  1. UcFirst(s string) string
  • 示例:
  1. func ExampleUcFirst() {
  2. var (
  3. s = `hello`
  4. result = gstr.UcFirst(s)
  5. )
  6. fmt.Println(result)
  7. // Output:
  8. // Hello
  9. }

LcFirst

  • 说明: LcFirsts 中首字符变为小写并返回其副本。

  • 格式:

  1. LcFirst(s string) string
  • 示例:
  1. func ExampleLcFirst() {
  2. var (
  3. str = `Goframe`
  4. result = gstr.LcFirst(str)
  5. )
  6. fmt.Println(result)
  7. // Output:
  8. // goframe
  9. }

UcWords

  • 说明: UcWords 将字符串 str 中每个单词的第一个字符变为大写。

  • 格式:

  1. UcWords(str string) string
  • 示例:
  1. func ExampleUcWords() {
  2. var (
  3. str = `hello world`
  4. result = gstr.UcWords(str)
  5. )
  6. fmt.Println(result)
  7. // Output:
  8. // Hello World
  9. }

IsLetterLower

  • 说明:IsLetterLower 验证给定的字符 b 是否是小写字符。

  • 格式:

  1. IsLetterLower(b byte) bool
  • 示例:
  1. func ExampleIsLetterLower() {
  2. fmt.Println(gstr.IsLetterLower('a'))
  3. fmt.Println(gstr.IsLetterLower('A'))
  4. // Output:
  5. // true
  6. // false
  7. }

IsLetterUpper

  • 说明:IsLetterUpper 验证字符 b 是否是大写字符。

  • 格式:

  1. IsLetterUpper(b byte) bool
  • 示例:
  1. func ExampleIsLetterUpper() {
  2. fmt.Println(gstr.IsLetterUpper('A'))
  3. fmt.Println(gstr.IsLetterUpper('a'))
  4. // Output:
  5. // true
  6. // false
  7. }

字符串比较

Compare

  • 说明:Compare 返回一个按字典顺序比较两个字符串的整数。 如果 a == b,结果为 0,如果 a < b,结果为 -1,如果 a > b,结果为 +1

  • 格式:

  1. Compare(a, b string) int
  • 示例:
  1. func ExampleCompare() {
  2. fmt.Println(gstr.Compare("c", "c"))
  3. fmt.Println(gstr.Compare("a", "b"))
  4. fmt.Println(gstr.Compare("c", "b"))
  5. // Output:
  6. // 0
  7. // -1
  8. // 1
  9. }

Equal

  • 说明: Equal 返回 ab 在不区分大小写的情况下是否相等。

  • 格式:

  1. Equal(a, b string) bool
  • 示例:
  1. func ExampleEqual() {
  2. fmt.Println(gstr.Equal(`A`, `a`))
  3. fmt.Println(gstr.Equal(`A`, `A`))
  4. fmt.Println(gstr.Equal(`A`, `B`))
  5. // Output:
  6. // true
  7. // true
  8. // false
  9. }

切分组合

Split

  • 说明:Splitdelimiterstr 拆分为 []string

  • 格式:

  1. Split(str, delimiter string) []string
  • 示例:
  1. func ExampleSplit() {
  2. var (
  3. str = `a|b|c|d`
  4. delimiter = `|`
  5. result = gstr.Split(str, delimiter)
  6. )
  7. fmt.Printf(`%#v`, result)
  8. // Output:
  9. // []string{"a", "b", "c", "d"}
  10. }

SplitAndTrim

  • 说明:SplitAndTrim 使用 delimiterstr 拆分为 []string,并对 []string 的每个元素调用 Trim,并忽略在 Trim 之后为空的元素。

  • 格式:

  1. SplitAndTrim(str, delimiter string, characterMask ...string) []string
  • 示例:
  1. func ExampleSplitAndTrim() {
  2. var (
  3. str = `a|b|||||c|d`
  4. delimiter = `|`
  5. result = gstr.SplitAndTrim(str, delimiter)
  6. )
  7. fmt.Printf(`%#v`, result)
  8. // Output:
  9. // []string{"a", "b", "c", "d"}
  10. }

Join

  • 说明: Joinarray 中的每一个元素连接并生成一个新的字符串。参数 sep 会作为新字符串的分隔符。

  • 格式:

  1. Join(array []string, sep string) string
  • 示例:
  1. func ExampleJoin() {
  2. var (
  3. array = []string{"goframe", "is", "very", "easy", "to", "use"}
  4. sep = ` `
  5. result = gstr.Join(array, sep)
  6. )
  7. fmt.Println(result)
  8. // Output:
  9. // goframe is very easy to use
  10. }

JoinAny

  • 说明: JoinAnyarray 中的每一个元素连接并生成一个新的字符串。参数 sep 会作为新字符串的分隔符。参数 array 可以是任意的类型。

  • 格式:

  1. JoinAny(array interface{}, sep string) string
  • 示例:
  1. func ExampleJoinAny() {
  2. var (
  3. sep = `,`
  4. arr2 = []int{99, 73, 85, 66}
  5. result = gstr.JoinAny(arr2, sep)
  6. )
  7. fmt.Println(result)
  8. // Output:
  9. // 99,73,85,66
  10. }

Explode

  • 说明: Explode 使用分隔符 delimiter 字符串 str 拆分成 []string

  • 格式:

  1. Explode(delimiter, str string) []string
  • 示例:
  1. func ExampleExplode() {
  2. var (
  3. str = `Hello World`
  4. delimiter = " "
  5. result = gstr.Explode(delimiter, str)
  6. )
  7. fmt.Printf(`%#v`, result)
  8. // Output:
  9. // []string{"Hello", "World"}
  10. }

Implode

  • 说明: Implode 使用 glue 连接 pieces 字符串数组的每一个元素。

  • 格式:

  1. Implode(glue string, pieces []string) string
  • 示例:
  1. func ExampleImplode() {
  2. var (
  3. pieces = []string{"goframe", "is", "very", "easy", "to", "use"}
  4. glue = " "
  5. result = gstr.Implode(glue, pieces)
  6. )
  7. fmt.Println(result)
  8. // Output:
  9. // goframe is very easy to use
  10. }

ChunkSplit

  • 说明:ChunkSplit 将字符串拆分为单位为 chunkLen 长度更小的每一份,并用 end 连接每一份拆分出的字符串。

  • 格式:

  1. ChunkSplit(body string, chunkLen int, end string) string
  • 示例:
  1. func ExampleChunkSplit() {
  2. var (
  3. body = `1234567890`
  4. chunkLen = 2
  5. end = "#"
  6. result = gstr.ChunkSplit(body, chunkLen, end)
  7. )
  8. fmt.Println(result)
  9. // Output:
  10. // 12#34#56#78#90#
  11. }

Fields

  • 说明: Fields[]string 的形式返回字符串中的每个单词。

  • 格式:

  1. Fields(str string) []string
  • 示例:
  1. func ExampleFields() {
  2. var (
  3. str = `Hello World`
  4. result = gstr.Fields(str)
  5. )
  6. fmt.Printf(`%#v`, result)
  7. // Output:
  8. // []string{"Hello", "World"}
  9. }

转义处理

AddSlashes

  • 说明: AddSlashes 将字符串中的符号前添加转义字符 '\'

  • 格式:

  1. AddSlashes(str string) string
  • 示例:
  1. func ExampleAddSlashes() {
  2. var (
  3. str = `'aa'"bb"cc\r\n\d\t`
  4. result = gstr.AddSlashes(str)
  5. )
  6. fmt.Println(result)
  7. // Output:
  8. // \'aa\'\"bb\"cc\\r\\n\\d\\t
  9. }

StripSlashes

  • 说明: StripSlashes 去掉字符串 str 中的转义字符 '\'

  • 格式:

  1. StripSlashes(str string) string
  • 示例:
  1. func ExampleStripSlashes() {
  2. var (
  3. str = `C:\\windows\\GoFrame\\test`
  4. result = gstr.StripSlashes(str)
  5. )
  6. fmt.Println(result)
  7. // Output:
  8. // C:\windows\GoFrame\test
  9. }

QuoteMeta

  • 说明:QuoteMeta 为str中’ . \ + * ? [ ^ ] ( $ ) 中的每个字符前添加一个转义字符 '\'。

  • 格式:

  1. QuoteMeta(str string, chars ...string) string
  • 示例:
  1. func ExampleQuoteMeta() {
  2. {
  3. var (
  4. str = `.\+?[^]()`
  5. result = gstr.QuoteMeta(str)
  6. )
  7. fmt.Println(result)
  8. }
  9. {
  10. var (
  11. str = `https://goframe.org/pages/viewpage.action?pageId=1114327`
  12. result = gstr.QuoteMeta(str)
  13. )
  14. fmt.Println(result)
  15. }
  16. // Output:
  17. // \.\\\+\?\[\^\]\(\)
  18. // https://goframe\.org/pages/viewpage\.action\?pageId=1114327
  19. }

统计计数

Count

  • 说明:Count 计算 substrs 中出现的次数。 如果在 s 中没有找到 substr,则返回 0

  • 格式:

  1. Count(s, substr string) int
  • 示例:
  1. func ExampleCount() {
  2. var (
  3. str = `goframe is very, very easy to use`
  4. substr1 = "goframe"
  5. substr2 = "very"
  6. result1 = gstr.Count(str, substr1)
  7. result2 = gstr.Count(str, substr2)
  8. )
  9. fmt.Println(result1)
  10. fmt.Println(result2)
  11. // Output:
  12. // 1
  13. // 2
  14. }

CountI

  • 说明:Count 计算 substrs 中出现的次数,不区分大小写。 如果在 s 中没有找到 substr,则返回 0

  • 格式:

  1. CountI(s, substr string) int
  • 示例:
  1. func ExampleCountI() {
  2. var (
  3. str = `goframe is very, very easy to use`
  4. substr1 = "GOFRAME"
  5. substr2 = "VERY"
  6. result1 = gstr.CountI(str, substr1)
  7. result2 = gstr.CountI(str, substr2)
  8. )
  9. fmt.Println(result1)
  10. fmt.Println(result2)
  11. // Output:
  12. // 1
  13. // 2
  14. }

CountWords

  • 说明:CountWordsmap[string]int 的形式返回 str 中使用的单词的统计信息。

  • 格式:

  1. CountWords(str string) map[string]int
  • 示例:
  1. func ExampleCountWords() {
  2. var (
  3. str = `goframe is very, very easy to use!`
  4. result = gstr.CountWords(str)
  5. )
  6. fmt.Printf(`%#v`, result)
  7. // Output:
  8. // map[string]int{"easy":1, "goframe":1, "is":1, "to":1, "use!":1, "very":1, "very,":1}
  9. }

CountChars

  • 说明:CountCharsmap[string]int 的形式返回 str 中使用的字符的统计信息。 noSpace 参数可以控制是否计算空格。

  • 格式:

  1. CountChars(str string, noSpace ...bool) map[string]int
  • 示例:
  1. func ExampleCountChars() {
  2. var (
  3. str = `goframe`
  4. result = gstr.CountChars(str)
  5. )
  6. fmt.Println(result)
  7. // May Output:
  8. // map[a:1 e:1 f:1 g:1 m:1 o:1 r:1]
  9. }

数组处理

SearchArray

  • 说明:SearchArray[]string 'a' 中区分大小写地搜索字符串 's',返回其在 'a' 中的索引。 如果在 'a' 中没有找到 's',则返回 -1

  • 格式:

  1. SearchArray(a []string, s string) int
  • 示例:
  1. func ExampleSearchArray() {
  2. var (
  3. array = []string{"goframe", "is", "very", "nice"}
  4. str = `goframe`
  5. result = gstr.SearchArray(array, str)
  6. )
  7. fmt.Println(result)
  8. // Output:
  9. // 0
  10. }

InArray

  • 说明:InArray校验 []string 'a' 中是否有字符串 ' s '

  • 格式:

  1. InArray(a []string, s string) bool
  • 示例:
  1. func ExampleInArray() {
  2. var (
  3. a = []string{"goframe", "is", "very", "easy", "to", "use"}
  4. s = "goframe"
  5. result = gstr.InArray(a, s)
  6. )
  7. fmt.Println(result)
  8. // Output:
  9. // true
  10. }

PrefixArray

  • 说明: PrefixArray[]string array 的每一个字符串添加 'prefix' 的前缀。

  • 格式:

  1. PrefixArray(array []string, prefix string)
  • 示例:
  1. func ExamplePrefixArray() {
  2. var (
  3. strArray = []string{"tom", "lily", "john"}
  4. )
  5. gstr.PrefixArray(strArray, "classA_")
  6. fmt.Println(strArray)
  7. // Output:
  8. // [classA_tom classA_lily classA_john]
  9. }

命名转换

CaseCamel

  • 说明: CaseCamel 将字符串转换为大驼峰形式(首字母大写)。

  • 格式:

  1. CaseCamel(s string) string
  • 示例:
  1. func ExampleCaseCamel() {
  2. var (
  3. str = `hello world`
  4. result = gstr.CaseCamel(str)
  5. )
  6. fmt.Println(result)
  7. // Output:
  8. // HelloWorld
  9. }

CaseCamelLower

  • 说明: CaseCamelLower 将字符串转换为小驼峰形式(首字母小写)。

  • 格式:

  1. CaseCamelLower(s string) string
  • 示例:
  1. func ExampleCaseCamelLower() {
  2. var (
  3. str = `hello world`
  4. result = gstr.CaseCamelLower(str)
  5. )
  6. fmt.Println(result)
  7. // Output:
  8. // helloWorld
  9. }

CaseSnake

  • 说明: CaseSnake 将字符串转换中的符号(下划线,空格,点,中横线)用下划线( _ )替换,并全部转换为小写字母。

  • 格式:

  1. CaseSnake(s string) string
  • 示例:
  1. func ExampleCaseSnake() {
  2. var (
  3. str = `hello world`
  4. result = gstr.CaseSnake(str)
  5. )
  6. fmt.Println(result)
  7. // Output:
  8. // hello_world
  9. }

CaseSnakeScreaming

  • 说明: CaseSnakeScreaming 把字符串中的符号(下划线,空格,点,中横线),全部替换为下划线 '_',并将所有英文字母转为大写。

  • 格式:

  1. CaseSnakeScreaming(s string) string
  • 示例:
  1. func ExampleCaseSnakeScreaming() {
  2. var (
  3. str = `hello world`
  4. result = gstr.CaseSnakeScreaming(str)
  5. )
  6. fmt.Println(result)
  7. // Output:
  8. // HELLO_WORLD
  9. }

CaseSnakeFirstUpper

  • 说明: CaseSnakeFirstUpper 将字符串中的字母为大写时,将大写字母转换为小写字母并在其前面增加一个下划线 '_',首字母大写时,只转换为小写,前面不增加下划线 '_'

  • 格式:

  1. CaseSnakeFirstUpper(word string, underscore ...string) string
  • 示例:
  1. func ExampleCaseSnakeFirstUpper() {
  2. var (
  3. str = `RGBCodeMd5`
  4. result = gstr.CaseSnakeFirstUpper(str)
  5. )
  6. fmt.Println(result)
  7. // Output:
  8. // rgb_code_md5
  9. }

CaseKebab

  • 说明: CaseKebab 将字符串转换中的符号(下划线,空格,点,)用中横线 '-' 替换,并全部转换为小写字母。

  • 格式:

  1. CaseKebab(s string) string
  • 示例:
  1. func ExampleCaseKebab() {
  2. var (
  3. str = `hello world`
  4. result = gstr.CaseKebab(str)
  5. )
  6. fmt.Println(result)
  7. // Output:
  8. // hello-world
  9. }

CaseKebabScreaming

  • 说明: CaseKebabScreaming 将字符串转换中的符号(下划线,空格,点,中横线)用中横线 '-' 替换,并全部转换为大写字母。

  • 格式:

  1. CaseKebabScreaming(s string) string
  • 示例:
  1. func ExampleCaseKebabScreaming() {
  2. var (
  3. str = `hello world`
  4. result = gstr.CaseKebabScreaming(str)
  5. )
  6. fmt.Println(result)
  7. // Output:
  8. // HELLO-WORLD
  9. }

CaseDelimited

  • 说明: CaseDelimited 将字符串转换中的符号进行替换。

  • 格式:

  1. CaseDelimited(s string, del byte) string
  • 示例:
  1. func ExampleCaseDelimited() {
  2. var (
  3. str = `hello world`
  4. del = byte('-')
  5. result = gstr.CaseDelimited(str, del)
  6. )
  7. fmt.Println(result)
  8. // Output:
  9. // hello-world
  10. }

CaseDelimitedScreaming

  • 说明: CaseDelimitedScreaming 将字符串中的符号(空格,下划线,点,中横线)用第二个参数进行替换,该函数第二个参数为替换的字符,第三个参数为大小写转换, true 为全部转换大写字母, false 为全部转为小写字母。

  • 格式:

  1. CaseDelimitedScreaming(s string, del uint8, screaming bool) string
  • 示例:
  1. func ExampleCaseDelimitedScreaming() {
  2. {
  3. var (
  4. str = `hello world`
  5. del = byte('-')
  6. result = gstr.CaseDelimitedScreaming(str, del, true)
  7. )
  8. fmt.Println(result)
  9. }
  10. {
  11. var (
  12. str = `hello world`
  13. del = byte('-')
  14. result = gstr.CaseDelimitedScreaming(str, del, false)
  15. )
  16. fmt.Println(result)
  17. }
  18. // Output:
  19. // HELLO-WORLD
  20. // hello-world
  21. }

包含判断

Contains

  • 说明: Contains 返回字符串 str 是否包含子字符串 substr,区分大小写。

  • 格式:

  1. Contains(str, substr string) bool
  • 示例:
  1. func ExampleContains() {
  2. {
  3. var (
  4. str = `Hello World`
  5. substr = `Hello`
  6. result = gstr.Contains(str, substr)
  7. )
  8. fmt.Println(result)
  9. }
  10. {
  11. var (
  12. str = `Hello World`
  13. substr = `hello`
  14. result = gstr.Contains(str, substr)
  15. )
  16. fmt.Println(result)
  17. }
  18. // Output:
  19. // true
  20. // false
  21. }

ContainsI

  • 说明:ContainsI 校验 substr 是否在 str 中,不区分大小写。

  • 格式:

  1. ContainsI(str, substr string) bool
  • 示例:
  1. func ExampleContainsI() {
  2. var (
  3. str = `Hello World`
  4. substr = "hello"
  5. result1 = gstr.Contains(str, substr)
  6. result2 = gstr.ContainsI(str, substr)
  7. )
  8. fmt.Println(result1)
  9. fmt.Println(result2)
  10. // Output:
  11. // false
  12. // true
  13. }

ContainsAny

  • 说明:ContainsAny 校验 s 中是否包含 chars

  • 格式:

  1. ContainsAny(s, chars string) bool
  • 示例:
  1. func ExampleContainsAny() {
  2. {
  3. var (
  4. s = `goframe`
  5. chars = "g"
  6. result = gstr.ContainsAny(s, chars)
  7. )
  8. fmt.Println(result)
  9. }
  10. {
  11. var (
  12. s = `goframe`
  13. chars = "G"
  14. result = gstr.ContainsAny(s, chars)
  15. )
  16. fmt.Println(result)
  17. }
  18. // Output:
  19. // true
  20. // false
  21. }

字符串转换

Chr

  • 说明:Chr 返回一个数字 0-255 对应的 ascii 字符串。

  • 格式:

  1. Chr(ascii int) string
  • 示例:
  1. func ExampleChr() {
  2. var (
  3. ascii = 65 // A
  4. result = gstr.Chr(ascii)
  5. )
  6. fmt.Println(result)
  7. // Output:
  8. // A
  9. }

Ord

  • 说明:Ord 将字符串的第一个字节转换为 0-255 之间的值。

  • 格式:

  1. Ord(char string) int
  • 示例:
  1. func ExampleOrd() {
  2. var (
  3. str = `goframe`
  4. result = gstr.Ord(str)
  5. )
  6. fmt.Println(result)
  7. // Output:
  8. // 103
  9. }

OctStr

  • 说明:OctStr 将字符串 str 中的八进制字符串转换为其原始字符串。

  • 格式:

  1. OctStr(str string) string
  • 示例:
  1. func ExampleOctStr() {
  2. var (
  3. str = `\346\200\241`
  4. result = gstr.OctStr(str)
  5. )
  6. fmt.Println(result)
  7. // Output:
  8. // 怡
  9. }

Reverse

  • 说明:Reverse 返回 str 的反转字符串。

  • 格式:

  1. Reverse(str string) string
  • 示例:
  1. func ExampleReverse() {
  2. var (
  3. str = `123456`
  4. result = gstr.Reverse(str)
  5. )
  6. fmt.Println(result)
  7. // Output:
  8. // 654321
  9. }

NumberFormat

  • 说明:NumberFormat 以千位分组来格式化数字。

    • 参数 decimal 设置小数点的个数。
    • 参数 decPoint 设置小数点的分隔符。
    • 参数 thousand 设置千位分隔符。
  • 格式:
  1. NumberFormat(number float64, decimals int, decPoint, thousandsSep string) string
  • 示例:
  1. func ExampleNumberFormat() {
  2. var (
  3. number float64 = 123456
  4. decimals = 2
  5. decPoint = "."
  6. thousandsSep = ","
  7. result = gstr.NumberFormat(number, decimals, decPoint, thousandsSep)
  8. )
  9. fmt.Println(result)
  10. // Output:
  11. // 123,456.00
  12. }

Shuffle

  • 说明:Shuffle 返回将 str 随机打散后的字符串。

  • 格式:

  1. Shuffle(str string) string
  • 示例:
  1. func ExampleShuffle() {
  2. var (
  3. str = `123456`
  4. result = gstr.Shuffle(str)
  5. )
  6. fmt.Println(result)
  7. // May Output:
  8. // 563214
  9. }

HideStr

  • 说明: HideStr 将字符串 str 从中间字符开始,百分比 percent 的字符转换成 hide 字符串。

  • 格式:

  1. HideStr(str string, percent int, hide string) string
  • 示例:
  1. func ExampleHideStr() {
  2. var (
  3. str = `13800138000`
  4. percent = 40
  5. hide = `*`
  6. result = gstr.HideStr(str, percent, hide)
  7. )
  8. fmt.Println(result)
  9. // Output:
  10. // 138****8000
  11. }

Nl2Br

  • 说明:Nl2Br 在字符串中的所有换行符之前插入 HTML 换行符 (' br ' |<br />): \n\r, \r\n, \r, \n

  • 格式:

  1. Nl2Br(str string, isXhtml ...bool) string
  • 示例:
  1. func ExampleNl2Br() {
  2. var (
  3. str = `goframe
  4. is
  5. very
  6. easy
  7. to
  8. use`
  9. result = gstr.Nl2Br(str)
  10. )
  11. fmt.Println(result)
  12. // Output:
  13. // goframe<br>is<br>very<br>easy<br>to<br>use
  14. }

WordWrap

  • 说明: WordWrap 使用换行符将 str 换行到给定字符数(不会切分单词)。

  • 格式:

  1. WordWrap(str string, width int, br string) string
  • 示例:
  1. func ExampleWordWrap() {
  2. {
  3. var (
  4. str = `A very long woooooooooooooooooord. and something`
  5. width = 8
  6. br = "\n"
  7. result = gstr.WordWrap(str, width, br)
  8. )
  9. fmt.Println(result)
  10. }
  11. {
  12. var (
  13. str = `The quick brown fox jumped over the lazy dog.`
  14. width = 20
  15. br = "<br />\n"
  16. result = gstr.WordWrap(str, width, br)
  17. )
  18. fmt.Printf("%v", result)
  19. }
  20. // Output:
  21. // A very
  22. // long
  23. // woooooooooooooooooord.
  24. // and
  25. // something
  26. // The quick brown fox<br />
  27. // jumped over the lazy<br />
  28. // dog.
  29. }

域名处理

IsSubDomain

  • 说明:IsSubDomain 校验 subDomain 是否为 mainDomain 的子域名。 支持 mainDomain 中的 '*'

  • 格式:

  1. IsSubDomain(subDomain string, mainDomain string) bool
  • 示例:
  1. func ExampleIsSubDomain() {
  2. var (
  3. subDomain = `s.goframe.org`
  4. mainDomain = `goframe.org`
  5. result = gstr.IsSubDomain(subDomain, mainDomain)
  6. )
  7. fmt.Println(result)
  8. // Output:
  9. // true
  10. }

参数解析

Parse

  • 说明: Parse 解析字符串并以 map[string]interface{} 类型返回。

  • 格式:

  1. Parse(s string) (result map[string]interface{}, err error)
  • 示例:
  1. func ExampleParse() {
  2. {
  3. var (
  4. str = `v1=m&v2=n`
  5. result, _ = gstr.Parse(str)
  6. )
  7. fmt.Println(result)
  8. }
  9. {
  10. var (
  11. str = `v[a][a]=m&v[a][b]=n`
  12. result, _ = gstr.Parse(str)
  13. )
  14. fmt.Println(result)
  15. }
  16. {
  17. // The form of nested Slice is not yet supported.
  18. var str = `v[][]=m&v[][]=n`
  19. result, err := gstr.Parse(str)
  20. if err != nil {
  21. panic(err)
  22. }
  23. fmt.Println(result)
  24. }
  25. {
  26. // This will produce an error.
  27. var str = `v=m&v[a]=n`
  28. result, err := gstr.Parse(str)
  29. if err != nil {
  30. println(err)
  31. }
  32. fmt.Println(result)
  33. }
  34. {
  35. var (
  36. str = `a .[[b=c`
  37. result, _ = gstr.Parse(str)
  38. )
  39. fmt.Println(result)
  40. }
  41. // May Output:
  42. // map[v1:m v2:n]
  43. // map[v:map[a:map[a:m b:n]]]
  44. // map[v:map[]]
  45. // Error: expected type 'map[string]interface{}' for key 'v', but got 'string'
  46. // map[]
  47. // map[a___[b:c]
  48. }

位置查找

Pos

  • 说明:Pos 返回 needlehaystack 中第一次出现的位置,区分大小写。 如果没有找到,则返回-1。

  • 格式:

  1. Pos(haystack, needle string, startOffset ...int) int
  • 示例:
  1. func ExamplePos() {
  2. var (
  3. haystack = `Hello World`
  4. needle = `World`
  5. result = gstr.Pos(haystack, needle)
  6. )
  7. fmt.Println(result)
  8. // Output:
  9. // 6
  10. }

PosRune

  • 说明: PosRune 的作用于函数 Pos 相似,但支持 haystackneedleunicode 字符串。

  • 格式:

  1. PosRune(haystack, needle string, startOffset ...int) int
  • 示例:
  1. func ExamplePosRune() {
  2. var (
  3. haystack = `GoFrame是一款模块化、高性能、企业级的Go基础开发框架`
  4. needle = `Go`
  5. posI = gstr.PosRune(haystack, needle)
  6. posR = gstr.PosRRune(haystack, needle)
  7. )
  8. fmt.Println(posI)
  9. fmt.Println(posR)
  10. // Output:
  11. // 0
  12. // 22
  13. }

PosI

  • 说明:PosI 返回 needlehaystack 中第一次出现的位置,不区分大小写。 如果没有找到,则返回-1。

  • 格式:

  1. PosI(haystack, needle string, startOffset ...int) int
  • 示例:
  1. func ExamplePosI() {
  2. var (
  3. haystack = `goframe is very, very easy to use`
  4. needle = `very`
  5. posI = gstr.PosI(haystack, needle)
  6. posR = gstr.PosR(haystack, needle)
  7. )
  8. fmt.Println(posI)
  9. fmt.Println(posR)
  10. // Output:
  11. // 11
  12. // 17
  13. }

PosRuneI

  • 说明: PosRuneI 的作用于函数 PosI 相似,但支持 haystackneedleunicode 字符串。

  • 格式:

  1. PosIRune(haystack, needle string, startOffset ...int) int
  • 示例:
  1. func ExamplePosIRune() {
  2. {
  3. var (
  4. haystack = `GoFrame是一款模块化、高性能、企业级的Go基础开发框架`
  5. needle = `高性能`
  6. startOffset = 10
  7. result = gstr.PosIRune(haystack, needle, startOffset)
  8. )
  9. fmt.Println(result)
  10. }
  11. {
  12. var (
  13. haystack = `GoFrame是一款模块化、高性能、企业级的Go基础开发框架`
  14. needle = `高性能`
  15. startOffset = 30
  16. result = gstr.PosIRune(haystack, needle, startOffset)
  17. )
  18. fmt.Println(result)
  19. }
  20. // Output:
  21. // 14
  22. // -1
  23. }

PosR

  • 说明:PosR 返回 needlehaystack 中最后一次出现的位置,区分大小写。 如果没有找到,则返回-1。

  • 格式:

  1. PosR(haystack, needle string, startOffset ...int) int
  • 示例:
  1. func ExamplePosR() {
  2. var (
  3. haystack = `goframe is very, very easy to use`
  4. needle = `very`
  5. posI = gstr.PosI(haystack, needle)
  6. posR = gstr.PosR(haystack, needle)
  7. )
  8. fmt.Println(posI)
  9. fmt.Println(posR)
  10. // Output:
  11. // 11
  12. // 17
  13. }

PosRuneR

  • 说明: PosRuneR 的作用于函数 PosR 相似,但支持 haystackneedleunicode 字符串。

  • 格式:

  1. PosRRune(haystack, needle string, startOffset ...int) int
  • 示例:
  1. func ExamplePosRRune() {
  2. var (
  3. haystack = `GoFrame是一款模块化、高性能、企业级的Go基础开发框架`
  4. needle = `Go`
  5. posI = gstr.PosIRune(haystack, needle)
  6. posR = gstr.PosRRune(haystack, needle)
  7. )
  8. fmt.Println(posI)
  9. fmt.Println(posR)
  10. // Output:
  11. // 0
  12. // 22
  13. }

PosRI

  • 说明:PosRI 返回 needlehaystack 中最后一次出现的位置,不区分大小写。 如果没有找到,则返回-1。

  • 格式:

  1. PosRI(haystack, needle string, startOffset ...int) int
  • 示例:
  1. func ExamplePosRI() {
  2. var (
  3. haystack = `goframe is very, very easy to use`
  4. needle = `VERY`
  5. posI = gstr.PosI(haystack, needle)
  6. posR = gstr.PosRI(haystack, needle)
  7. )
  8. fmt.Println(posI)
  9. fmt.Println(posR)
  10. // Output:
  11. // 11
  12. // 17
  13. }

PosRIRune

  • 说明:PosRIRune的作用于函数PosRI相似,但支持 haystackneedleunicode 字符串。

  • 格式:

  1. PosRIRune(haystack, needle string, startOffset ...int) int
  • 示例:
  1. func ExamplePosRIRune() {
  2. var (
  3. haystack = `GoFrame是一款模块化、高性能、企业级的Go基础开发框架`
  4. needle = `GO`
  5. posI = gstr.PosIRune(haystack, needle)
  6. posR = gstr.PosRIRune(haystack, needle)
  7. )
  8. fmt.Println(posI)
  9. fmt.Println(posR)
  10. // Output:
  11. // 0
  12. // 22
  13. }

查找替换

Replace

  • 说明: Replace 返回 origin 字符串中, searchreplace 替换后的新字符串。 search 区分大小写。

  • 格式:

  1. Replace(origin, search, replace string, count ...int) string
  • 示例:
  1. func ExampleReplace() {
  2. var (
  3. origin = `golang is very nice!`
  4. search = `golang`
  5. replace = `goframe`
  6. result = gstr.Replace(origin, search, replace)
  7. )
  8. fmt.Println(result)
  9. // Output:
  10. // goframe is very nice!
  11. }

ReplaceI

  • 说明: ReplaceI 返回 origin 字符串中, searchreplace 替换后的新字符串。 search 不区分大小写。

  • 格式:

  1. ReplaceI(origin, search, replace string, count ...int) string
  • 示例:
  1. func ExampleReplaceI() {
  2. var (
  3. origin = `golang is very nice!`
  4. search = `GOLANG`
  5. replace = `goframe`
  6. result = gstr.ReplaceI(origin, search, replace)
  7. )
  8. fmt.Println(result)
  9. // Output:
  10. // goframe is very nice!
  11. }

ReplaceByArray

  • 说明:ReplaceByArray 返回 origin 被一个切片按两个一组 (search, replace) 顺序替换的新字符串,区分大小写。

  • 格式:

  1. ReplaceByArray(origin string, array []string) string
  • 示例:
  1. func ExampleReplaceByArray() {
  2. {
  3. var (
  4. origin = `golang is very nice`
  5. array = []string{"lang", "frame"}
  6. result = gstr.ReplaceByArray(origin, array)
  7. )
  8. fmt.Println(result)
  9. }
  10. {
  11. var (
  12. origin = `golang is very good`
  13. array = []string{"golang", "goframe", "good", "nice"}
  14. result = gstr.ReplaceByArray(origin, array)
  15. )
  16. fmt.Println(result)
  17. }
  18. // Output:
  19. // goframe is very nice
  20. // goframe is very nice
  21. }

ReplaceIByArray

  • 说明:ReplaceIByArray 返回 origin 被一个切片按两个一组 (search, replace) 顺序替换的新字符串,不区分大小写。

  • 格式:

  1. ReplaceIByArray(origin string, array []string) string
  • 示例:
  1. func ExampleReplaceIByArray() {
  2. var (
  3. origin = `golang is very Good`
  4. array = []string{"Golang", "goframe", "GOOD", "nice"}
  5. result = gstr.ReplaceIByArray(origin, array)
  6. )
  7. fmt.Println(result)
  8. // Output:
  9. // goframe is very nice
  10. }

ReplaceByMap

  • 说明:ReplaceByMap 返回 originmapkey 替换为 value 的新字符串,区分大小写。

  • 格式:

  1. ReplaceByMap(origin string, replaces map[string]string) string
  • 示例:
  1. func ExampleReplaceByMap() {
  2. {
  3. var (
  4. origin = `golang is very nice`
  5. replaces = map[string]string{
  6. "lang": "frame",
  7. }
  8. result = gstr.ReplaceByMap(origin, replaces)
  9. )
  10. fmt.Println(result)
  11. }
  12. {
  13. var (
  14. origin = `golang is very good`
  15. replaces = map[string]string{
  16. "golang": "goframe",
  17. "good": "nice",
  18. }
  19. result = gstr.ReplaceByMap(origin, replaces)
  20. )
  21. fmt.Println(result)
  22. }
  23. // Output:
  24. // goframe is very nice
  25. // goframe is very nice
  26. }

ReplaceIByMap

  • 说明:ReplaceIByMap 返回 originmapkey 替换为 value 的新字符串,不区分大小写。

  • 格式:

  1. ReplaceIByMap(origin string, replaces map[string]string) string
  • 示例:
  1. func ExampleReplaceIByMap() {
  2. var (
  3. origin = `golang is very nice`
  4. replaces = map[string]string{
  5. "Lang": "frame",
  6. }
  7. result = gstr.ReplaceIByMap(origin, replaces)
  8. )
  9. fmt.Println(result)
  10. // Output:
  11. // goframe is very nice
  12. }

子串截取

Str

  • 说明: Str 返回从 needle 第一次出现的位置开始,到 haystack 结尾的字符串(包含 needle 本身)。

  • 格式:

  1. Str(haystack string, needle string) string
  • 示例:
  1. func ExampleStr() {
  2. var (
  3. haystack = `xxx.jpg`
  4. needle = `.`
  5. result = gstr.Str(haystack, needle)
  6. )
  7. fmt.Println(result)
  8. // Output:
  9. // .jpg
  10. }

StrEx

  • 说明: StrEx 返回从 needle 第一次出现的位置开始,到 haystack 结尾的字符串(不包含 needle 本身)。

  • 格式:

  1. StrEx(haystack string, needle string) string
  • 示例:
  1. func ExampleStrEx() {
  2. var (
  3. haystack = `https://goframe.org/index.html?a=1&b=2`
  4. needle = `?`
  5. result = gstr.StrEx(haystack, needle)
  6. )
  7. fmt.Println(result)
  8. // Output:
  9. // a=1&b=2
  10. }

StrTill

  • 说明: StrTill 返回从 haystack 字符串开始到 needle 第一次出现的位置的字符串(包含 needle 本身)。

  • 格式:

  1. StrTill(haystack string, needle string) string
  • 示例:
  1. func ExampleStrTill() {
  2. var (
  3. haystack = `https://goframe.org/index.html?test=123456`
  4. needle = `?`
  5. result = gstr.StrTill(haystack, needle)
  6. )
  7. fmt.Println(result)
  8. // Output:
  9. // https://goframe.org/index.html?
  10. }

StrTillEx

  • 说明: StrTillEx 返回从 haystack 字符串开始到 needle 第一次出现的位置的字符串(不包含 needle 本身)。

  • 格式:

  1. StrTillEx(haystack string, needle string) string
  • 示例:
  1. func ExampleStrTillEx() {
  2. var (
  3. haystack = `https://goframe.org/index.html?test=123456`
  4. needle = `?`
  5. result = gstr.StrTillEx(haystack, needle)
  6. )
  7. fmt.Println(result)
  8. // Output:
  9. // https://goframe.org/index.html
  10. }

SubStr

  • 说明:SubStr 返回字符串 strstart 开始,长度为 length 的新字符串。 参数 length 是可选的,它默认使用 str 的长度。

  • 格式:

  1. SubStr(str string, start int, length ...int) (substr string)
  • 示例:
  1. func ExampleSubStr() {
  2. var (
  3. str = `1234567890`
  4. start = 0
  5. length = 4
  6. subStr = gstr.SubStr(str, start, length)
  7. )
  8. fmt.Println(subStr)
  9. // Output:
  10. // 1234
  11. }

SubStrRune

  • 说明:SubStrRune 返回 unicode 字符串 strstart 开始,长度为 length 的新字符串。 参数 length 是可选的,它默认使用 str 的长度。

  • 格式:

  1. SubStrRune(str string, start int, length ...int) (substr string)
  • 示例:
  1. func ExampleSubStrRune() {
  2. var (
  3. str = `GoFrame是一款模块化、高性能、企业级的Go基础开发框架。`
  4. start = 14
  5. length = 3
  6. subStr = gstr.SubStrRune(str, start, length)
  7. )
  8. fmt.Println(subStr)
  9. // Output:
  10. // 高性能
  11. }

StrLimit

  • 说明: StrLimitstr 字符串开始,长度为 length 的字符串,加上 suffix... 后返回新的字符串。

  • 格式:

  1. StrLimit(str string, length int, suffix ...string) string
  • 示例:
  1. func ExampleStrLimit() {
  2. var (
  3. str = `123456789`
  4. length = 3
  5. suffix = `...`
  6. result = gstr.StrLimit(str, length, suffix)
  7. )
  8. fmt.Println(result)
  9. // Output:
  10. // 123...
  11. }

StrLimitRune

  • 说明: StrLimitRuneunicode 字符串 str 开始,长度为 length 的字符串,加上 suffix... 后返回新的字符串。

  • 格式:

  1. StrLimitRune(str string, length int, suffix ...string) string
  • 示例:
  1. func ExampleStrLimitRune() {
  2. var (
  3. str = `GoFrame是一款模块化、高性能、企业级的Go基础开发框架。`
  4. length = 17
  5. suffix = "..."
  6. result = gstr.StrLimitRune(str, length, suffix)
  7. )
  8. fmt.Println(result)
  9. // Output:
  10. // GoFrame是一款模块化、高性能...
  11. }

SubStrFrom

  • 说明:SubStrFrom 返回字符串 str 从第一次出现 needstr 的结尾的字符串(包含 need)。

  • 格式:

  1. SubStrFrom(str string, need string) (substr string)
  • 示例:
  1. func ExampleSubStrFrom() {
  2. var (
  3. str = "我爱GoFrameGood"
  4. need = `爱`
  5. )
  6. fmt.Println(gstr.SubStrFrom(str, need))
  7. // Output:
  8. // 爱GoFrameGood
  9. }

SubStrFromEx

  • 说明:SubStrFromEx 返回字符串 str 从第一次出现 needstr 的结尾的字符串(不包含 need)。

  • 格式:

  1. SubStrFromEx(str string, need string) (substr string)
  • 示例:
  1. func ExampleSubStrFromEx() {
  2. var (
  3. str = "我爱GoFrameGood"
  4. need = `爱`
  5. )
  6. fmt.Println(gstr.SubStrFromEx(str, need))
  7. // Output:
  8. // GoFrameGood
  9. }

SubStrFromR

  • 说明:SubStrFromR 返回字符串 str 从最后一次出现 needstr 的结尾的字符串(包含 need)。

  • 格式:

  1. SubStrFromR(str string, need string) (substr string)
  • 示例:
  1. func ExampleSubStrFromR() {
  2. var (
  3. str = "我爱GoFrameGood"
  4. need = `Go`
  5. )
  6. fmt.Println(gstr.SubStrFromR(str, need))
  7. // Output:
  8. // Good
  9. }

SubStrFromREx

  • 说明:SubStrFromREx 返回字符串 str 从最后一次出现 needstr 的结尾的字符串(不包含 need)。

  • 格式:

  1. SubStrFromREx(str string, need string) (substr string)
  • 示例:
  1. func ExampleSubStrFromREx() {
  2. var (
  3. str = "我爱GoFrameGood"
  4. need = `Go`
  5. )
  6. fmt.Println(gstr.SubStrFromREx(str, need))
  7. // Output:
  8. // od
  9. }

字符/子串过滤

Trim

  • 说明: Trim 从字符串的开头和结尾剪切空白(或其他字符)。 可选参数 characterMask 指定额外剥离的字符。

  • 格式:

  1. Trim(str string, characterMask ...string) string
  • 示例:
  1. func ExampleTrim() {
  2. var (
  3. str = `*Hello World*`
  4. characterMask = "*d"
  5. result = gstr.Trim(str, characterMask)
  6. )
  7. fmt.Println(result)
  8. // Output:
  9. // Hello Worl
  10. }

TrimStr

  • 说明:TrimStr 从字符串的开头和结尾去掉所有 cut 字符串(不会删除开头或结尾的空白)。

  • 格式:

  1. TrimStr(str string, cut string, count ...int) string
  • 示例:
  1. func ExampleTrimStr() {
  2. var (
  3. str = `Hello World`
  4. cut = "World"
  5. count = -1
  6. result = gstr.TrimStr(str, cut, count)
  7. )
  8. fmt.Println(result)
  9. // Output:
  10. // Hello
  11. }

TrimLeft

  • 说明:TrimLeft 将字符串开头的空格(或其他字符)删除。

  • 格式:

  1. TrimLeft(str string, characterMask ...string) string
  • 示例:
  1. func ExampleTrimLeft() {
  2. var (
  3. str = `*Hello World*`
  4. characterMask = "*"
  5. result = gstr.TrimLeft(str, characterMask)
  6. )
  7. fmt.Println(result)
  8. // Output:
  9. // Hello World*
  10. }

TrimLeftStr

  • 说明:TrimLeftStr 从字符串的开头删除 countcut 字符串(不会删除开头的空格)。

  • 格式:

  1. TrimLeftStr(str string, cut string, count ...int) string
  • 示例:
  1. func ExampleTrimLeftStr() {
  2. var (
  3. str = `**Hello World**`
  4. cut = "*"
  5. count = 1
  6. result = gstr.TrimLeftStr(str, cut, count)
  7. )
  8. fmt.Println(result)
  9. // Output:
  10. // *Hello World**
  11. }

TrimRight

  • 说明: TrimRight 从字符串的末尾去掉空白(或其他字符)。

  • 格式:

  1. TrimRight(str string, characterMask ...string) string
  • 示例:
  1. func ExampleTrimRight() {
  2. var (
  3. str = `**Hello World**`
  4. characterMask = "*def" // []byte{"*", "d", "e", "f"}
  5. result = gstr.TrimRight(str, characterMask)
  6. )
  7. fmt.Println(result)
  8. // Output:
  9. // **Hello Worl
  10. }

TrimRightStr

  • 说明:TrimRightStr 从字符串的尾部删除 countcut 字符串(不会删除尾部的空格)。

  • 格式:

  1. TrimRightStr(str string, cut string, count ...int) string
  • 示例:
  1. func ExampleTrimRightStr() {
  2. var (
  3. str = `Hello World!`
  4. cut = "!"
  5. count = -1
  6. result = gstr.TrimRightStr(str, cut, count)
  7. )
  8. fmt.Println(result)
  9. // Output:
  10. // Hello World
  11. }

TrimAll

  • 说明: TrimAll 删除字符串 str 中的所有空格(或其他字符)以及 characterMask 字符。

  • 格式:

  1. TrimAll(str string, characterMask ...string) string
  • 示例:
  1. func ExampleTrimAll() {
  2. var (
  3. str = `*Hello World*`
  4. characterMask = "*"
  5. result = gstr.TrimAll(str, characterMask)
  6. )
  7. fmt.Println(result)
  8. // Output:
  9. // HelloWorld
  10. }

HasPrefix

  • 说明: HasPrefix 返回 s 是否以 prefix 开头。

  • 格式:

  1. HasPrefix(s, prefix string) bool
  • 示例:
  1. func ExampleHasPrefix() {
  2. var (
  3. s = `Hello World`
  4. prefix = "Hello"
  5. result = gstr.HasPrefix(s, prefix)
  6. )
  7. fmt.Println(result)
  8. // Output:
  9. // true
  10. }

HasSuffix

  • 说明: HasSuffix 返回 s 是否以 suffix 结束。

  • 格式:

  1. HasSuffix(s, suffix string) bool
  • 示例:
  1. func ExampleHasSuffix() {
  2. var (
  3. s = `my best love is goframe`
  4. prefix = "goframe"
  5. result = gstr.HasSuffix(s, prefix)
  6. )
  7. fmt.Println(result)
  8. // Output:
  9. // true
  10. }

版本比较

CompareVersion

  • 说明:CompareVersionab 作为标准 GNU 版本进行比较。

  • 格式:

  1. CompareVersion(a, b string) int
  • 示例:
  1. func ExampleCompareVersion() {
  2. fmt.Println(gstr.CompareVersion("v2.11.9", "v2.10.8"))
  3. fmt.Println(gstr.CompareVersion("1.10.8", "1.19.7"))
  4. fmt.Println(gstr.CompareVersion("2.8.beta", "2.8"))
  5. // Output:
  6. // 1
  7. // -1
  8. // 0
  9. }

CompareVersionGo

  • 说明: CompareVersionGoab 作为标准的 Golang 版本进行比较。

  • 格式:

  1. CompareVersionGo(a, b string) int
  • 示例:
  1. func ExampleCompareVersionGo() {
  2. fmt.Println(gstr.CompareVersionGo("v2.11.9", "v2.10.8"))
  3. fmt.Println(gstr.CompareVersionGo("v4.20.1", "v4.20.1+incompatible"))
  4. fmt.Println(gstr.CompareVersionGo(
  5. "v0.0.2-20180626092158-b2ccc119800e",
  6. "v1.0.1-20190626092158-b2ccc519800e",
  7. ))
  8. // Output:
  9. // 1
  10. // 1
  11. // -1
  12. }

相似计算

Levenshtein

  • 说明: Levenshtein 计算两个字符串之间的 Levenshtein 距离。

  • 格式:

  1. Levenshtein(str1, str2 string, costIns, costRep, costDel int) int
  • 示例:
  1. func ExampleLevenshtein() {
  2. var (
  3. str1 = "Hello World"
  4. str2 = "hallo World"
  5. costIns = 1
  6. costRep = 1
  7. costDel = 1
  8. result = gstr.Levenshtein(str1, str2, costIns, costRep, costDel)
  9. )
  10. fmt.Println(result)
  11. // Output:
  12. // 2
  13. }

SimilarText

  • 说明: SimilarText 计算两个字符串之间的相似度。

  • 格式:

  1. SimilarText(first, second string, percent *float64) int
  • 示例:
  1. func ExampleSimilarText() {
  2. var (
  3. first = `AaBbCcDd`
  4. second = `ad`
  5. percent = 0.80
  6. result = gstr.SimilarText(first, second, &percent)
  7. )
  8. fmt.Println(result)
  9. // Output:
  10. // 2
  11. }

Soundex

  • 说明: Soundex 用于计算字符串的 Soundex 键。

  • 格式:

  1. Soundex(str string) string
  • 示例:
  1. func ExampleSoundex() {
  2. var (
  3. str1 = `Hello`
  4. str2 = `Hallo`
  5. result1 = gstr.Soundex(str1)
  6. result2 = gstr.Soundex(str2)
  7. )
  8. fmt.Println(result1, result2)
  9. // Output:
  10. // H400 H400
  11. }