使用方式

接口文档

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

以下常用方法列表,文档更新可能滞后于代码新特性,更多的方法及示例请参考代码文档:

字符串判断

  • 说明: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

  • 格式:

    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
  • 示例:

  • 说明: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. needle = `Go`
    4. posI = gstr.PosIRune(haystack, needle)
    5. posR = gstr.PosRRune(haystack, needle)
    6. )
    7. fmt.Println(posI)
    8. fmt.Println(posR)
    9. // Output:
    10. // 0
    11. // 22
    12. }

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(posR)
    9. // Output:
    10. // 11
    11. // 17
    12. }

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

  • 格式:

    1. Replace(origin, search, replace string, count ...int) string
  • 示例:

  • 说明: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 = "*"
    5. result = gstr.Trim(str, characterMask)
    6. )
    7. fmt.Println(result)
    8. // Output:
    9. // Hello World
    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用于计算字符串的键。

    1. 示例: