Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

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

使用方式

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

接口文档

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

Tip

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

常用方法

字符串判断

IsNumeric

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

  • 格式:

    Code Block
    languagego
    IsNumeric(s string) bool


  • 示例:

    Code Block
    languagego
    func ExampleIsNumeric() {
    	fmt.Println(gstr.IsNumeric("88"))
    	fmt.Println(gstr.IsNumeric("3.1415926"))
    	fmt.Println(gstr.IsNumeric("abc"))
    	// Output:
    	// true
    	// true
    	// false
    }


字符串长度

Reverse

LenRune

  • 说明:Reverse返回str的反转字符串。  LenRune返回unicode字符串长度。

  • 格式:

    Code Block
    languagego
    ReverseLenRune(str string) stringint


  • 示例:

    Code Block
    languagego
    func ExampleReverseExampleLenRune() {
    	var (
    		str    = `123456``GoFrame框架`
    		result = gstr.ReverseLenRune(str)
    	)
    	fmt.Println(result)
    
    	// Output:
    	// 6543219
    }


字符串创建

NumberFormat

Repeat

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

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

  • 参数decimal设置小数点的个数。  
  • 参数decPoint设置小数点的分隔符。  
  • 参数thousand设置千位分隔符。

     

  • 格式:

    Code Block
    languagego
    NumberFormatRepeat(numberinput float64string, decimalsmultiplier int, decPoint, thousandsSep string) string


  • 示例:

    Code Block
    languagego
    func ExampleNumberFormatExampleRepeat() {
    	var (
    		numberinput      = float64`goframe = 123456`
    		decimals             multiplier = 23
    		decPoint result            = "."gstr.Repeat(input, multiplier)
    		thousandsSep         = ","
    		result               = gstr.NumberFormat(number, decimals, decPoint, thousandsSep)
    	)
    	fmt.)
    	fmt.Println(result)
    
    	// Output:
    	// 123,456.00goframe goframe goframe
    }

Fields


大小写转换

ToLower

  • 说明:ToLowers中所有Unicode字符都变为小写并返回其副本。  说明:Fields[]string的形式返回字符串中的每个单词。

  • 格式:

    Code Block
    languagego
    FieldsToLower(strs string) []string


  • 示例:

    Code Block
    languagego
    func ExampleFieldsExampleToLower() {
    	var (
    		strs      = `Hello World``GOFRAME`
    		result = gstr.FieldsToLower(strs)
    	)
    	fmt.PrintfPrintln(`%#v`, result)
    
    	// Output:
    	// []string{"Hello", "World"}
    }

WordWrap

  • goframe
    }


ToUpper

  • 说明:ToUppers中所有Unicode字符都变为大写并返回其副本。 说明:WordWrap使用换行符将str换行到给定字符数(不会切分单词)。  

  • 格式:

    Code Block
    languagego
    WordWrap(str string, width int, brToUpper(s string) string


  • 示例:

    Code Block
    languagego
    func ExampleWordWrapExampleToUpper() {
    	{
    		var (
    			str  s  = `A very long woooooooooooooooooord. and something`
    			width  = 8
    			br     = "\n"= `goframe`
    			result = gstr.WordWrap(str, width, brToUpper(s)
    		)
    		fmt.Println(result)
    	}
    	{// Output:
    		var// (
    			str    = `The quick brown fox jumped over the lazy dog.`
    			width  = 20
    			brGOFRAME
    }


UcFirst

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

  • 格式:

    Code Block
    languagego
    UcFirst(s string) string


  • 示例:

    Code Block
    languagego
    func ExampleUcFirst() {
    	var (
    		s      = "<br />\n"
    	`hello`
    		result = gstr.WordWrap(str, width, brUcFirst(s)
    		)
    		fmt.PrintfPrintln("%v", result)
    	}
    
    	// Output:
    	// A very
    	// long
    	// woooooooooooooooooord.
    	// and
    	// something
    	// The quick brown fox<br />
    	// jumped over the lazy<br />
    	// dog.
    }

LenRune

  • Hello
    }


LcFirst

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

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

  • 格式:

    Code Block
    languagego
    LenRuneLcFirst(strs string) intstring


  • 示例:

    Code Block
    languagego
    func ExampleLenRuneExampleLcFirst() {
    	var (
    		str    = `GoFrame框架``Goframe`
    		result = gstr.LenRuneLcFirst(str)
    	)
    	fmt.Println(result)
    
    	// Output:
    	// 9goframe
    }
Repeat

UcWords

  • 说明:Repeat返回一个由input重复multiplier次后组成的新字符串。  UcWords将字符串str中每个单词的第一个字符变为大写。

  • 格式:

    Code Block
    languagego
    RepeatUcWords(inputstr string, multiplier int) string


  • 示例:

    Code Block
    languagego
    func ExampleRepeatExampleUcWords() {
    	var (
    		inputstr      = `goframe`hello `world`
    		multiplierresult = 3
    		result     = gstr.Repeat(input, multipliergstr.UcWords(str)
    	)
    	fmt.Println(result)
    
    	// Output:
    	// goframeHello goframe goframeWorld
    }
Shuffle

IsLetterLower

  • 说明:Shuffle返回将str随机打散后的字符串。IsLetterLower验证给定的字符b是否是小写字符。  

  • 格式:

    Code Block
    languagego
    ShuffleIsLetterLower(strb stringbyte) stringbool


  • 示例:

    Code Block
    languagego
    func ExampleShuffleExampleIsLetterLower() {
    	var (
    		str    = `123456`
    		result = gstr.Shuffle(str)
    	fmt.Println(gstr.IsLetterLower('a'))
    	fmt.Println(result(gstr.IsLetterLower('A'))
    
    	// May Output:
    	// 563214true
    	// false
    }
HideStr

IsLetterUpper

  • 说明:HideStr将字符串str从中间字符开始,百分比percent的字符转换成hide字符串。IsLetterUpper验证字符b是否是大写字符。  

  • 格式:

    Code Block
    languagego
    HideStrIsLetterUpper(strb string, percent int, hide string) stringbyte) bool


  • 示例:

    Code Block
    languagego
    func ExampleHideStrExampleIsLetterUpper() {
    	var (
    		str     = `13800138000`
    		percent = 40
    		hide    = `*`
    		result  = gstr.HideStr(str, percent, hide)
    	fmt.Println(gstr.IsLetterUpper('A'))
    	fmt.Println(result(gstr.IsLetterUpper('a'))
    
    	// Output:
    	// 138****8000true
    	// false
    }


字符串比较

Nl2Br

Compare

  • 说明:Compare返回一个按字典顺序比较两个字符串的整数。 如果a == b,结果为0,如果a < b,结果为-1,如果a > b,结果为+1说明:Nl2Br在字符串中的所有换行符之前插入HTML换行符(' br ' |<br />): \n\r, \r\n, \r, \n。  

  • 格式:

    Code Block
    languagego
    Nl2BrCompare(str stringa, isXhtml ...boolb string) stringint


  • 示例:

    Code Block
    languagego
    func ExampleNl2BrExampleCompare() {
    	var (
    		str = `goframe
    is
    very
    easy
    to
    use`
    		result = gstr.Nl2Br(str)
    	)
    fmt.Println(gstr.Compare("c", "c"))
    	fmt.Println(gstr.Compare("a", "b"))
    	fmt.Println(resultgstr.Compare("c", "b"))
    
    	// Output:
    	// goframe<br>is<br>very<br>easy<br>to<br>use
    }

大小写转换

ToLower

  • 0
    	// -1
    	// 1
    }


Equal

  • 说明:Equal返回ab在不区分大小写的情况下是否相等。说明:ToLowers中所有Unicode字符都变为小写并返回其副本。  

  • 格式:

    Code Block
    languagego
    ToLower(sEqual(a, b string) stringbool


  • 示例:

    Code Block
    languagego
    func ExampleToLowerExampleEqual() {
    	var (
    		s      = `GOFRAME`
    		result = gstr.ToLower(s)
    	fmt.Println(gstr.Equal(`A`, `a`))
    	fmt.Println(gstr.Equal(`A`, `A`))
    	fmt.Println(resultgstr.Equal(`A`, `B`))
    
    	// Output:
    	// goframetrue
    	// true
    	// false
    }
ToUpper

切分组合

Split

  • 说明:ToUppers中所有Unicode字符都变为大写并返回其副本。 Splitdelimiterstr拆分为[]string 

  • 格式:

    Code Block
    languagego
    ToUpper(sSplit(str, delimiter string) []string


  • 示例:

    Code Block
    languagego
    func ExampleToUpperExampleSplit() {
    	var (
    		sstr       = `a|b|c|d`
    		delimiter = `goframe``|`
    		result    = gstr.ToUpper(sSplit(str, delimiter)
    	)
    	fmt.PrintlnPrintf(`%#v`, result)
    
    	// Output:
    	// GOFRAME[]string{"a", "b", "c", "d"}
    }
UcFirst

SplitAndTrim

  • 说明:UcFirsts中首字符变为大写并返回其副本。 SplitAndTrim使用delimiterstr拆分为[]string,并对[]string的每个元素调用Trim,并忽略在Trim之后为空的元素。  

  • 格式:

    Code Block
    languagego
    UcFirst(s SplitAndTrim(str, delimiter string, characterMask ...string) []string


  • 示例:

    Code Block
    languagego
    func ExampleUcFirstExampleSplitAndTrim() {
    	var (
    		sstr       = `a|b|||||c|d`
    		delimiter = `hello``|`
    		result    = gstr.UcFirst(sSplitAndTrim(str, delimiter)
    	)
    	fmt.PrintlnPrintf(`%#v`, result)
    
    	// Output:
    	// Hello []string{"a", "b", "c", "d"}
    }
LcFirst

Join

  • 说明:LcFirsts中首字符变为小写并返回其副本。  Joinarray中的每一个元素连接并生成一个新的字符串。参数sep会作为新字符串的分隔符。

  • 格式:

    Code Block
    languagego
    LcFirst(sJoin(array []string, sep string) string


  • 示例:

    Code Block
    languagego
    func ExampleLcFirstExampleJoin() {
    	var (
    		strarray  =  = `Goframe`
    		result = gstr.LcFirst(str[]string{"goframe", "is", "very", "easy", "to", "use"}
    		sep    = ` `
    		result = gstr.Join(array, sep)
    	)
    	fmt.Println(result)
    
    	// Output:
    	// goframe is very easy to use
    }
UcWords

JoinAny

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

  • 格式:

    Code Block
    languagego
    UcWords(strJoinAny(array interface{}, sep string) string


  • 示例:

    Code Block
    languagego
    func ExampleUcWordsExampleJoinAny() {
    	var (
    		strsep    = `hello world``,`
    		arr2   = []int{99, 73, 85, 66}
    		result = gstr.UcWords(strJoinAny(arr2, sep)
    	)
    	fmt.Println(result)
    
    	// Output:
    	// Hello World99,73,85,66
    }
IsLetterLower

Explode

  • 说明:IsLetterLower验证给定的字符b是否是小写字符。  Explode使用分隔符delimiter字符串str拆分成[]string

  • 格式:

    Code Block
    languagego
    IsLetterLower(b byte) boolExplode(delimiter, str string) []string


  • 示例:

    Code Block
    languagego
    func ExampleIsLetterLowerExampleExplode() {
    	fmt.Println(gstr.IsLetterLower('a')var (
    		str       = `Hello World`
    		delimiter = " "
    		result    = gstr.Explode(delimiter, str)
    	)
    	fmt.Println(gstr.IsLetterLower('A'))Printf(`%#v`, result)
    
    	// Output:
    	// true
    	// false[]string{"Hello", "World"}
    }
IsLetterUpper

Implode

  • 说明:IsLetterUpper验证字符b是否是大写字符。  Implode使用glue连接pieces字符串数组的每一个元素。

  • 格式:

    Code Block
    languagego
    IsLetterUpper(b byte) boolImplode(glue string, pieces []string) string


  • 示例:

    Code Block
    languagego
    func ExampleIsLetterUpperExampleImplode() {
    	fmt.Println(gstr.IsLetterUpper('A')var (
    		pieces = []string{"goframe", "is", "very", "easy", "to", "use"}
    		glue   = " "
    		result = gstr.Implode(glue, pieces)
    	)
    	fmt.Println(gstr.IsLetterUpper('a'))result)
    
    	// Output:
    	// true
    	// falsegoframe is very easy to use
    }

字符串比较

Compare


ChunkSplit

  • 说明:ChunkSplit将字符串拆分为单位为chunkLen长度更小的每一份,并用end连接每一份拆分出的字符串。说明:Compare返回一个按字典顺序比较两个字符串的整数。 如果a == b,结果为0,如果a < b,结果为-1,如果a > b,结果为+1。  

  • 格式:

    Code Block
    languagego
    Compare(aChunkSplit(body string, chunkLen int, bend string) intstring


  • 示例:

    Code Block
    languagego
    func ExampleCompareExampleChunkSplit() {
    	fmt.Println(gstr.Compare("c", "c"))
    	fmt.Println(gstr.Compare("a", "b"))
    	fmt.Println(gstr.Compare("c", "b")var (
    		body     = `1234567890`
    		chunkLen = 2
    		end      = "#"
    		result   = gstr.ChunkSplit(body, chunkLen, end)
    	)
    	fmt.Println(result)
    
    	// Output:
    	// 0
    	// -1
    	// 1
    12#34#56#78#90#
    }
Equal

Fields

  • 说明:Equal返回ab在不区分大小写的情况下是否相等。Fields[]string的形式返回字符串中的每个单词。

  • 格式:

    Code Block
    languagego
    EqualFields(a,str b string) bool[]string


  • 示例:

    Code Block
    languagego
    func ExampleEqualExampleFields() {
    	fmt.Println(gstr.Equal(`A`, `a`))
    	fmt.Println(gstr.Equal(`A`, `A`)var (
    		str    = `Hello World`
    		result = gstr.Fields(str)
    	)
    	fmt.Println(gstr.Equal(`A`Printf(`%#v`, `B`)result)
    
    	// Output:
    	// true
    	// true
    	// false[]string{"Hello", "World"}
    }
切分组合

转义处理

Split

AddSlashes

  • 说明:AddSlashes将字符串中的符号前添加转义字符'\'说明:Splitdelimiterstr拆分为[]string。  

  • 格式:

    Code Block
    languagego
    SplitAddSlashes(str, delimiter string) []string


  • 示例:

    Code Block
    languagego
    func ExampleSplitExampleAddSlashes() {
    	var (
    		str       = `a|b|c|d`
    		delimiter = `|``'aa'"bb"cc\r\n\d\t`
    		result    = gstr.SplitAddSlashes(str, delimiter))
    	)
    
    	fmt.PrintfPrintln(`%#v`, result)
    
    	// Output:
    	// []string{"a", "b", "c", "d"}
    }

SplitAndTrim

  • \'aa\'\"bb\"cc\\r\\n\\d\\t
    }


StripSlashes

  • 说明:StripSlashes去掉字符串str中的转义字符'\'说明: SplitAndTrim使用delimiterstr拆分为[]string,并对[]string的每个元素调用Trim,并忽略在Trim之后为空的元素。  

  • 格式:

    Code Block
    languagego
    SplitAndTrimStripSlashes(str, delimiter string, characterMask ...string) []string


  • 示例:

    Code Block
    languagego
    func ExampleSplitAndTrimExampleStripSlashes() {
    	var (
    		str       = `a|b|||||c|d`
    		delimiter = `|`
    		result    = gstr.SplitAndTrim(str, delimiter= `C:\\windows\\GoFrame\\test`
    		result = gstr.StripSlashes(str)
    	)
    	fmt.PrintfPrintln(`%#v`, result)
    
    	// Output:
    	// []string{"a", "b", "c", "d"}C:\windows\GoFrame\test
    }

Join


QuoteMeta

  • 说明:QuoteMeta为str中'. \ + * ? [ ^ ] ( $ )中的每个字符前添加一个转义字符'\'。说明:Joinarray中的每一个元素连接并生成一个新的字符串。参数sep会作为新字符串的分隔符。

  • 格式:

    Code Block
    languagego
    JoinQuoteMeta(arraystr []string, sepchars ...string) string


  • 示例:

    Code Block
    languagego
    func ExampleJoinExampleQuoteMeta() {
    	{
    		var (
    		array	str  = []string{"goframe", "is", "very", "easy", "to", "use"}
    		sep  = `.\+?[^]()`
    			result = gstr.QuoteMeta(str)
    		)
    		fmt.Println(result)
    	}
    	{
    		var (
    			str    = ` `
    `https://goframe.org/pages/viewpage.action?pageId=1114327`
    			result = gstr.Join(array, sepQuoteMeta(str)
    		)
    		fmt.Println(result)
    	}
    
    	// Output:
    	// goframe is very easy to use
    }

JoinAny

  • \.\\\+\?\[\^\]\(\)
    	// https://goframe\.org/pages/viewpage\.action\?pageId=1114327
    
    }


统计计数

Count

  • 说明:Count计算substrs中出现的次数。  如果在s中没有找到substr,则返回0。  说明:JoinAnyarray中的每一个元素连接并生成一个新的字符串。参数sep会作为新字符串的分隔符。参数array可以是任意的类型。

  • 格式:

    Code Block
    languagego
    JoinAny(array interface{}Count(s, sepsubstr string) stringint


  • 示例:

    Code Block
    languagego
    func ExampleJoinAnyExampleCount() {
    	var (
    		sepstr     = `,``goframe is very, very easy to use`
    		arr2substr1 = "goframe"
    		substr2 = []int{99, 73, 85, 66}"very"
    		result1 = gstr.Count(str, substr1)
    		resultresult2 = gstr.JoinAnyCount(arr2str, sepsubstr2)
    	)
    	fmt.Println(result1)
    	fmt.Println(resultresult2)
    
    	// Output:
    	// 1
    	// 99,73,85,662
    }

Explode


CountI

  • 说明:Count计算substrs中出现的次数,不区分大小写。  如果在s中没有找到substr,则返回0。  说明:Explode使用分隔符delimiter字符串str拆分成[]string

  • 格式:

    Code Block
    languagego
    ExplodeCountI(delimiters, strsubstr string) []stringint


  • 示例:

    Code Block
    languagego
    func ExampleExplodeExampleCountI() {
    	var (
    		str     = `goframe  = `Hello World`is very, very easy to use`
    		delimitersubstr1 = " GOFRAME"
    		result  substr2  = gstr.Explode(delimiter, str)
    	"VERY"
    		result1 = gstr.CountI(str, substr1)
    		result2 = gstr.CountI(str, substr2)
    	)
    	fmt.Println(result1)
    	fmt.Printf(`%#v`, resultPrintln(result2)
    
    	// Output:
    	// []string{"Hello", "World"}1
    	// 2
    }

Implode


CountWords

  • 说明:CountWordsmap[string]int的形式返回str中使用的单词的统计信息。说明:Implode使用glue连接pieces字符串数组的每一个元素。

  • 格式:

    Code Block
    languagego
    ImplodeCountWords(gluestr string,) pieces map[string]string) stringint


  • 示例:

    Code Block
    languagego
    func ExampleImplodeExampleCountWords() {
    	var (
    		piecesstr    = []string{"goframe", "is"`goframe is very, "very", "easy", "to", "use"}
    		glue   = " "use!`
    		result = gstr.Implode(glue, piecesCountWords(str)
    	)
    	fmt.PrintlnPrintf(`%#v`, result)
    
    	// Output:
    	// map[string]int{"easy":1, "goframe":1, "is very easy to use
    }

ChunkSplit

  • ":1, "to":1, "use!":1, "very":1, "very,":1}
    }


CountChars

  • 说明:CountCharsmap[string]int的形式返回str中使用的字符的统计信息。noSpace参数可以控制是否计算空格。说明:ChunkSplit将字符串拆分为单位为chunkLen长度更小的每一份,并用end连接每一份拆分出的字符串。

  • 格式:

    Code Block
    languagego
    ChunkSplitCountChars(bodystr string, chunkLen int, end stringnoSpace ...bool) map[string]int


  • 示例:

    Code Block
    languagego
    func ExampleChunkSplitExampleCountChars() {
    	var (
    		bodystr     = `1234567890`
    		chunkLen = 2
    		end      = "#"`goframe`
    		result   = gstr.ChunkSplit(body, chunkLen, endCountChars(str)
    	)
    	fmt.Println(result)
    
    	// May Output:
    	// 12#34#56#78#90#map[a:1 e:1 f:1 g:1 m:1 o:1 r:1]
    }
转义处理

数组处理

AddSlashes

SearchArray

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

  • 格式:

    Code Block
    languagego
    AddSlashes(strSearchArray(a []string, s string) stringint


  • 示例:

    Code Block
    languagego
    func ExampleAddSlashesExampleSearchArray() {
    	var (
    		strarray    = `'aa'"bb"cc\r\n\d\t`
    		result = gstr.AddSlashes(str)
    	)
    
    	fmt.Println(result)
    
    	// Output:
    	// \'aa\'\"bb\"cc\\r\\n\\d\\t
    }

StripSlashes

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

  • 格式:

    Code Block
    languagego
    StripSlashes(str string) string

    示例:

    Code Block
    languagego
    func ExampleStripSlashes() {
    	var ([]string{"goframe", "is", "very", "nice"}
    		str    = `C:\\windows\\GoFrame\\test``goframe`
    		result = gstr.StripSlashesSearchArray(array, str)
    	)
    	fmt.Println(result)
    
    	// Output:
    	// C:\windows\GoFrame\test0
    }
QuoteMeta

InArray

  • 说明:QuoteMeta为str中'. \ + * ? [ ^ ] ( $ )中的每个字符前添加一个转义字符'\'。InArray校验[]string 'a'中是否有字符串' s '。  

  • 格式:

    Code Block
    languagego
    QuoteMetaInArray(stra []string, charss ...string) stringbool


  • 示例:

    Code Block
    languagego
    func ExampleQuoteMetaExampleInArray() {
    	{
    		var (
    			stra      = `.\+?[^]()`
    			result = gstr.QuoteMeta(str)
    		)
    		fmt.Println(result)
    	}
    	{
    		var (
    			str]string{"goframe", "is", "very", "easy", "to", "use"}
    		s      = `https://goframe.org/pages/viewpage.action?pageId=1114327`"goframe"
    			result = gstr.QuoteMeta(strInArray(a, s)
    		)
    		fmt.Println(result)
    	}
    
    	// Output:
    	// \.\\\+\?\[\^\]\(\)
    	// https://goframe\.org/pages/viewpage\.action\?pageId=1114327
    
    }

统计计数

Count

  • true
    }


PrefixArray

  • 说明:PrefixArray[]string array的每一个字符串添加'prefix'的前缀。说明:Count计算substrs中出现的次数。  如果在s中没有找到substr,则返回0。  

  • 格式:

    Code Block
    languagego
    Count(sPrefixArray(array []string, substrprefix string) int


  • 示例:

    Code Block
    languagego
    func ExampleCountExamplePrefixArray() {
    	var (
    		strstrArray     = `goframe is very, very easy to use`
    		substr1 = "goframe"
    		substr2 = "very"
    		result1 = gstr.Count(str, substr1)
    		result2 = gstr.Count(str, substr2)
    	)
    	fmt.Println(result1)= []string{"tom", "lily", "john"}
    	)
    
    	gstr.PrefixArray(strArray, "classA_")
    
    	fmt.Println(result2strArray)
    
    	// Output:
    	// 1
    	// 2
    }

CountI

  •  [classA_tom classA_lily classA_john]
    }


命名转换

CaseCamel

  • 说明:CaseCamel将字符串转换为大驼峰形式(首字母大写)。说明:Count计算substrs中出现的次数,不区分大小写。  如果在s中没有找到substr,则返回0。  

  • 格式:

    Code Block
    languagego
    CountICaseCamel(s, substr string) intstring


  • 示例:

    Code Block
    languagego
    func ExampleCountIExampleCaseCamel() {
    	var (
    		str     = `goframe is very, very easy to use``hello world`
    		substr1 = "GOFRAME"
    		substr2result = "VERY"
    		result1 = gstr.CountICaseCamel(str, substr1)
    		result2 = gstr.CountI(str, substr2)
    	)
    	fmt.Println(result1)
    	)
    	fmt.Println(result2result)
    
    	// Output:
    	// 1
    	// 2
    HelloWorld
    }

CountWords


CaseCamelLower

  • 说明:CaseCamelLower将字符串转换为小驼峰形式(首字母小写)。说明:CountWordsmap[string]int的形式返回str中使用的单词的统计信息。

  • 格式:

    Code Block
    languagego
    CountWordsCaseCamelLower(strs string) map[string]int


  • 示例:

    Code Block
    languagego
    func ExampleCountWordsExampleCaseCamelLower() {
    	var (
    		str    = `goframe is very, very easy to use!``hello world`
    		result = gstr.CountWordsCaseCamelLower(str)
    	)
    	fmt.PrintfPrintln(`%#v`, result)
    
    	// Output:
    	// map[string]int{"easy":1, "goframe":1, "is":1, "to":1, "use!":1, "very":1, "very,":1} helloWorld
    }

CountChars


CaseSnake

  • 说明:CaseSnake将字符串转换中的符号(下划线,空格,点,中横线)用下划线( _ )替换,并全部转换为小写字母。说明:CountCharsmap[string]int的形式返回str中使用的字符的统计信息。noSpace参数可以控制是否计算空格。

  • 格式:

    Code Block
    languagego
    CountCharsCaseSnake(strs string, noSpace ...bool) map[string]int


  • 示例:

    Code Block
    languagego
    func ExampleCountCharsExampleCaseSnake() {
    	var (
    		str    = `hello `goframe`world`
    		result = gstr.CountCharsCaseSnake(str)
    	)
    	fmt.Println(result)
    
    	// May Output:
    	// map[a:1 e:1 f:1 g:1 m:1 o:1 r:1]hello_world
    }
数组处理

CaseSnakeScreaming

SearchArray

  • 说明:SearchArray[]string 'a'中区分大小写地搜索字符串's',返回其在'a'中的索引。 如果在'a'中没有找到's',则返回-1。  说明:CaseSnakeScreaming把字符串中的符号(下划线,空格,点,中横线),全部替换为下划线'_',并将所有英文字母转为大写。

  • 格式:

    Code Block
    languagego
    SearchArray(a []string, CaseSnakeScreaming(s string) intstring


  • 示例:

    Code Block
    languagego
    func ExampleSearchArrayExampleCaseSnakeScreaming() {
    	var (
    		array  = []string{"goframe", "is", "very", "nice"}
    		str    = `hello `goframe`world`
    		result = gstr.SearchArrayCaseSnakeScreaming(array, str)
    	)
    	fmt.Println(result)
    
    	// Output:
    	// 0HELLO_WORLD
    }
InArray

CaseSnakeFirstUpper

  • 说明:InArray校验[]string 'a'中是否有字符串' s '。  CaseSnakeFirstUpper将字符串中的字母为大写时,将大写字母转换为小写字母并在其前面增加一个下划线'_',首字母大写时,只转换为小写,前面不增加下划线'_'

  • 格式:

    Code Block
    languagego
    InArrayCaseSnakeFirstUpper(aword []string, sunderscore ...string) boolstring


  • 示例:

    Code Block
    languagego
    func ExampleInArrayExampleCaseSnakeFirstUpper() {
    	var (
    		a  str    = []string{"goframe", "is", "very", "easy", "to", "use"}
    		s      = "goframe"`RGBCodeMd5`
    		result = gstr.InArray(a, sCaseSnakeFirstUpper(str)
    	)
    	fmt.Println(result)
    
    	// Output:
    	// truergb_code_md5
    }

PrefixArray


CaseKebab

  • 说明:CaseKebab将字符串转换中的符号(下划线,空格,点,)用中横线'-'替换,并全部转换为小写字母。说明:PrefixArray[]string array的每一个字符串添加'prefix'的前缀。

  • 格式:

    Code Block
    languagego
    PrefixArrayCaseKebab(arrays []string,) prefix string)


  • 示例:

    Code Block
    languagego
    func ExamplePrefixArrayExampleCaseKebab() {
    	var (
    		strArraystr    = []string{"tom", "lily", "john"}
    	)
    
    	gstr.PrefixArray(strArray, "classA_")
     `hello world`
    		result = gstr.CaseKebab(str)
    	)
    	fmt.Println(strArrayresult)
    
    	// Output:
    	// [classA_tom classA_lily classA_john]hello-world
    }

命名转换

CaseCamel

CaseKebabScreaming

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

  • 格式:

    Code Block
    languagego
    CaseCamelCaseKebabScreaming(s string) string


  • 示例:

    Code Block
    languagego
    func ExampleCaseCamelExampleCaseKebabScreaming() {
    	var (
    		str    = `hello world`
    		result = gstr.CaseCamelCaseKebabScreaming(str)
    	)
    	fmt.Println(result)
    
    	// Output:
    	// HelloWorldHELLO-WORLD
    }
CaseCamelLower

CaseDelimited

  • 说明:CaseCamelLower将字符串转换为小驼峰形式(首字母小写)。CaseDelimited将字符串转换中的符号进行替换。

  • 格式:

    Code Block
    languagego
    CaseCamelLowerCaseDelimited(s string, del byte) string


  • 示例:

    Code Block
    languagego
    func ExampleCaseCamelLowerExampleCaseDelimited() {
    	var (
    		str    = `hello world`
    		del    = byte('-')
    		result = gstr.CaseCamelLowerCaseDelimited(str, del)
    	)
    	fmt.Println(result)
    
    	// Output:
    	// helloWorldhello-world
    }
CaseSnake

CaseDelimitedScreaming

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

  • 格式:

    Code Block
    languagego
    CaseSnakeCaseDelimitedScreaming(s string, del uint8, screaming bool) string


  • 示例:

    Code Block
    languagego
    func ExampleCaseSnakeExampleCaseDelimitedScreaming() {
    	{
    		var (
    			str    = `hello world`
    		result	del  = gstr.CaseSnake(str)
    	)
    	fmt.Println(result)
    
    	// Output:
    	// hello_world
    }

CaseSnakeScreaming

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

  • 格式:

    Code Block
    languagego
    CaseSnakeScreaming(s string) string

    示例:

    Code Block
    languagego
    func ExampleCaseSnakeScreaming() {
    	 = byte('-')
    			result = gstr.CaseDelimitedScreaming(str, del, true)
    		)
    		fmt.Println(result)
    	}
    	{
    		var (
    			str    = `hello world`
    			del    = byte('-')
    			result = gstr.CaseSnakeScreamingCaseDelimitedScreaming(str, del, false)
    		)
    		fmt.Println(result)
    	}
    
    	// Output:
    	// HELLO_-WORLD
    	// hello-world
    }

CaseSnakeFirstUpper


包含判断

Contains

  • 说明:Contains返回字符串str是否包含子字符串substr,区分大小写。说明:CaseSnakeFirstUpper将字符串中的字母为大写时,将大写字母转换为小写字母并在其前面增加一个下划线'_',首字母大写时,只转换为小写,前面不增加下划线'_'

  • 格式:

    Code Block
    languagego
    CaseSnakeFirstUpperContains(word stringstr, underscoresubstr ...string) stringbool


  • 示例:

    Code Block
    languagego
    func ExampleCaseSnakeFirstUpperExampleContains() {
    	{
    		var (
    			str    = `Hello World`
    			substr = `RGBCodeMd5``Hello`
    			result = gstr.CaseSnakeFirstUpperContains(str, substr)
    	)
    	fmt.Println(result)
    
    	// Output:
    	// rgb_code_md5
    }

CaseKebab

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

  • 格式:

    Code Block
    languagego
    CaseKebab(s string) string

    示例:

    Code Block
    languagego
    func ExampleCaseKebab() {
    )
    		fmt.Println(result)
    	}
    	{
    		var (
    			str    = `hello world`
     `Hello World`
    			substr = `hello`
    			result = gstr.CaseKebabContains(str, substr)
    		)
    		fmt.Println(result)
    	}
    
    	// Output:
    	// true
    	// hello-worldfalse
    }

CaseKebabScreaming


ContainsI

  • 说明:ContainsI校验substr是否在str中,不区分大小写。  说明:CaseKebabScreaming将字符串转换中的符号(下划线,空格,点,中横线)用中横线'-'替换,并全部转换为大写字母。

  • 格式:

    Code Block
    languagego
    CaseKebabScreaming(sContainsI(str, substr string) stringbool


  • 示例:

    Code Block
    languagego
    func ExampleCaseKebabScreamingExampleContainsI() {
    	var ((
    		str     = `Hello World`
    		substr  = "hello"
    		str   result1 = `hello world`gstr.Contains(str, substr)
    		resultresult2 = gstr.CaseKebabScreamingContainsI(str, substr)
    	)
    	fmt.Println(result1)
    	fmt.Println(resultresult2)
    
    	// Output:
    	// HELLO-WORLDfalse
    	// true
    }
CaseDelimited

ContainsAny

  • 说明:CaseDelimited将字符串转换中的符号进行替换。ContainsAny校验s中是否包含chars

  • 格式:

    Code Block
    languagego
    CaseDelimitedContainsAny(s string, delchars bytestring) stringbool


  • 示例:

    Code Block
    languagegogo
    func ExampleContainsAny() {
    	{
    		var (
    			s      = `goframe`
    			chars  = "g"
    			result = gstr.ContainsAny(s, chars)
    		)
    		fmt.Println(result)
    	}
    	{
    	func ExampleCaseDelimited() {
    	var (
    		str	s      = `hello world``goframe`
    			delchars    = byte('-')
    "G"
    			result = gstr.CaseDelimitedContainsAny(strs, delchars)
    		)
    		fmt.Println(result)
    	}
    
    	// Output:
    	// true
    	// hello-worldfalse
    }

CaseDelimitedScreaming


字符串转换

Chr

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

  • 格式:

    Code Block
    languagego
    CaseDelimitedScreaming(s string, del uint8, screaming boolChr(ascii int) string


  • 示例:

    Code Block
    languagego
    func ExampleCaseDelimitedScreamingExampleChr() {
    	{
    		var (
    			str  ascii  = `hello world`
    			del    = byte('-')
    	65 // A
    		result = gstr.CaseDelimitedScreaming(str, del, trueChr(ascii)
    		)
    		fmt.Println(result)
    	}
    	{// Output:
    		var (
    			str    = `hello world`
    			del// A
    }


Ord

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

  • 格式:

    Code Block
    languagego
    Ord(char string) int


  • 示例:

    Code Block
    languagego
    func ExampleOrd() {
    	var (
    		str    = byte('-')
    	`goframe`
    		result = gstr.CaseDelimitedScreamingOrd(str, del, false)
    		)
    
    		fmt.Println(result)
    	}
    
    	// Output:
    	// HELLO-WORLD
    	// hello-world103
    }

包含判断

Contains

OctStr

  • 说明:Contains返回字符串str是否包含子字符串substr,区分大小写。OctStr将字符串str中的八进制字符串转换为其原始字符串。

  • 格式:

    Code Block
    languagego
    ContainsOctStr(str, substr string) boolstring


  • 示例:

    Code Block
    languagego
    func ExampleContainsExampleOctStr() {
    	{
    		var (
    			str    = `Hello World``\346\200\241`
    			substrresult = `Hello`gstr.OctStr(str)
    	)
    	fmt.Println(result)
    
    	// Output:
    	// 怡
    }


Reverse

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

  • 格式:

    Code Block
    languagego
    Reverse(str string) string


  • 示例:

    Code Block
    languagego
    func ExampleReverse() {
    
    			result = gstr.Contains(str, substr)
    		)
    		fmt.Println(result)
    	}
    	{
    		var (
    			str    = `Hello World``123456`
    			substr = `hello`
    			result = gstr.ContainsReverse(str, substr)
    		)
    		fmt.Println(result)
    	}
    
    	// Output:
    	// true
    	// false654321
    }

ContainsI


NumberFormat

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

    • 参数decimal设置小数点的个数。  
    • 参数decPoint设置小数点的分隔符。  
    • 参数thousand设置千位分隔符。

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

  • 格式:

    Code Block
    languagego
    ContainsI(strNumberFormat(number float64, decimals int, decPoint, substrthousandsSep string) boolstring


  • 示例:

    Code Block
    languagego
    func ExampleContainsIExampleNumberFormat() {
    	var (
    		strnumber       float64 = `Hello World`
    		substr 123456
    		decimals             = 2
    		decPoint             = "hello."
    		result1thousandsSep         = gstr.Contains(str, substr)","
    		result2result               = gstr.ContainsI(strNumberFormat(number, decimals, decPoint, substrthousandsSep)
    	)
    	fmt.Println(result1result)
    	fmt.Println(result2)
    
    	// Output:
    	// false
    	// true123,456.00
    }
ContainsAny

Shuffle

  • 说明:ContainsAny校验s中是否包含charsShuffle返回将str随机打散后的字符串。

  • 格式:

    Code Block
    languagego
    ContainsAny(s, charsShuffle(str string) boolstring


  • 示例:

    Code Block
    languagego
    func ExampleContainsAnyExampleShuffle() {
    	{
    		var (
    			sstr    = `123456`
    		result = `goframe`gstr.Shuffle(str)
    	)
    		chars  = "g"
    			result = gstr.ContainsAny(s, chars)
    		)
    		fmt.Println(result)
    	}
    	{
    	fmt.Println(result)
    
    	// May Output:
    	// 563214
    }


HideStr

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

  • 格式:

    Code Block
    languagego
    HideStr(str string, percent int, hide string) string


  • 示例:

    Code Block
    languagego
    func ExampleHideStr() {
    	var (
    			sstr     = `13800138000`
    		percent = `goframe`40
    			charshide    = "G"`*`
    			result  = gstr.ContainsAny(sHideStr(str, percent, charshide)
    		)
    		fmt.Println(result)
    	}
    
    	// Output:
    	// true
    	// false
    }

字符转换

Chr

  • 138****8000
    }


Nl2Br

  • 说明:Nl2Br在字符串中的所有换行符之前插入HTML换行符(' br ' |<br />): \n\r, \r\n, \r, \n说明:Chr返回一个数字0-255对应ascii字符串。  

  • 格式:

    Code Block
    languagego
    Chr(ascii intNl2Br(str string, isXhtml ...bool) string


  • 示例:

    Code Block
    languagego
    func ExampleChrExampleNl2Br() {
    	var (
    		ascii str = 65 // A`goframe
    is
    very
    easy
    to
    use`
    		result = gstr.ChrNl2Br(asciistr)
    	)
    
    	fmt.Println(result)
    
    	// Output:
    	// Agoframe<br>is<br>very<br>easy<br>to<br>use
    }
Ord

WordWrap

  • 说明:Ord将字符串的第一个字节转换为0-255之间的值。 WordWrap使用换行符将str换行到给定字符数(不会切分单词)。  

  • 格式:

    Code Block
    languagego
    Ord(char string) int

    示例:

    WordWrap(str string, width int, br string) string


  • 示例:

    Code Block
    languagego
    func ExampleWordWrap() {
    	{
    		var (
    			str    = `A very long woooooooooooooooooord. and something`
    			width  = 8
    			br 
    Code Block
    languagego
    func ExampleOrd() {
    	var (
    		str    = `goframe`"\n"
    			result = gstr.OrdWordWrap(str, width, br)
    		)
    
    		fmt.Println(result)
    	}
    	// Output:{
    	//	var 103
    }

OctStr

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

  • 格式:

    Code Block
    languagego
    OctStr(str string) string

    示例:

    Code Block
    languagego
    func ExampleOctStr() {
    	var (
    		str(
    			str    = `The quick brown fox jumped over the lazy dog.`
    			width  = 20
    			br     = "<br `\346\200\241`
    />\n"
    			result = gstr.OctStrWordWrap(str, width, br)
    		)
    		fmt.PrintlnPrintf("%v", result)
    	}
    
    	// Output:
    	// A very
    	// long
    	// woooooooooooooooooord.
    	// and
    	// something
    	// The quick brown fox<br />
    	// jumped over the lazy<br />
    	// dog.
    }


域名处理

IsSubDomain

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

  • 格式:

    Code Block
    languagego
    IsSubDomain(subDomain string, mainDomain string) bool


  • 示例:

    Code Block
    languagego
    func ExampleIsSubDomain() {
    	var (
    		subDomain  = `s.goframe.org`
    		mainDomain = `goframe.org`
    		result     = gstr.IsSubDomain(subDomain, mainDomain)
    	)
    	fmt.Println(result)
    
    	// Output:
    	// true
    }
    
    


参数解析

Parse

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

  • 格式:

    Code Block
    languagego
    Parse(s string) (result map[string]interface{}, err error)


  • 示例:

    Code Block
    languagego
    func ExampleParse() {
    	{
    		var (
    			str       = `v1=m&v2=n`
    			result, _ = gstr.Parse(str)
    		)
    		fmt.Println(result)
    	}
    	{
    		var (
    			str       = `v[a][a]=m&v[a][b]=n`
    			result, _ = gstr.Parse(str)
    		)
    		fmt.Println(result)
    	}
    	{
    		// The form of nested Slice is not yet supported.
    		var str = `v[][]=m&v[][]=n`
    		result, err := gstr.Parse(str)
    		if err != nil {
    			panic(err)
    		}
    		fmt.Println(result)
    	}
    	{
    		// This will produce an error.
    		var str = `v=m&v[a]=n`
    		result, err := gstr.Parse(str)
    		if err != nil {
    			println(err)
    		}
    		fmt.Println(result)
    	}
    	{
    		var (
    			str       = `a .[[b=c`
    			result, _ = gstr.Parse(str)
    		)
    		fmt.Println(result)
    	}
    
    	// May Output:
    	// map[v1:m v2:n]
    	// map[v:map[a:map[a:m b:n]]]
    	// map[v:map[]]
    	// Error: expected type 'map[string]interface{}' for key 'v', but got 'string'
    	// map[]
    	// map[a___[b:c]
    }


位置查找

Pos

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

  • 格式:

    Code Block
    languagego
    Pos(haystack, needle string, startOffset ...int) int


  • 示例:

    Code Block
    languagego
    func ExamplePos() {
    	var (
    		haystack = `Hello World`
    		needle   = `World`
    		result   = gstr.Pos(haystack, needle)
    	)
    	fmt.Println(result)
    
    	// Output:
    	// 6
    }


PosRune

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

  • 格式:

    Code Block
    languagego
    PosRune(haystack, needle string, startOffset ...int) int


  • 示例:

    Code Block
    languagego
    func ExamplePosRune() {
    	var (
    		haystack = `GoFrame是一款模块化、高性能、企业级的Go基础开发框架`
    		needle   = `Go`
    		posI     = gstr.PosRune(haystack, needle)
    		posR     = gstr.PosRRune(haystack, needle)
    	)
    	fmt.Println(posI)
    	fmt.Println(posR)
    
    	// Output:
    	// 0
    	// 22
    }


PosI

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

  • 格式:

    Code Block
    languagego
    PosI(haystack, needle string, startOffset ...int) int


  • 示例:

    Code Block
    languagego
    func ExamplePosI() {
    	var (
    		haystack = `goframe is very, very easy to use`
    		needle   = `very`
    		posI     = gstr.PosI(haystack, needle)
    		posR     = gstr.PosR(haystack, needle)
    	)
    	fmt.Println(posI)
    	fmt.Println(posR)
    
    	// Output:
    	// 11
    	// 17
    }


PosRuneI

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

  • 格式:

    Code Block
    languagego
    PosIRune(haystack, needle string, startOffset ...int) int


  • 示例:

    Code Block
    languagego
    func ExamplePosIRune() {
    	{
    		var (
    			haystack    = `GoFrame是一款模块化、高性能、企业级的Go基础开发框架`
    			needle      = `高性能`
    			startOffset = 10
    			result      = gstr.PosIRune(haystack, needle, startOffset)
    		)
    		fmt.Println(result)
    	}
    	{
    		var (
    			haystack    = `GoFrame是一款模块化、高性能、企业级的Go基础开发框架`
    			needle      = `高性能`
    			startOffset = 30
    			result      = gstr.PosIRune(haystack, needle, startOffset)
    		)
    		fmt.Println(result)
    	}
    
    	// Output:
    	// 14
    	// -1
    }


PosR

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

  • 格式:

    Code Block
    languagego
    PosR(haystack, needle string, startOffset ...int) int


  • 示例:

    Code Block
    languagego
    func ExamplePosR() {
    	var (
    		haystack = `goframe is very, very easy to use`
    		needle   = `very`
    		posI     = gstr.PosI(haystack, needle)
    		posR     = gstr.PosR(haystack, needle)
    	)
    	fmt.Println(posI)
    	fmt.Println(posR)
    
    	// Output:
    	// 11
    	// 17
    }


PosRuneR

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

  • 格式:

    Code Block
    languagego
    PosRRune(haystack, needle string, startOffset ...int) int


  • 示例:

    Code Block
    languagego
    func ExamplePosRRune() {
    	var (
    		haystack = `GoFrame是一款模块化、高性能、企业级的Go基础开发框架`
    		needle   = `Go`
    		posI     = gstr.PosIRune(haystack, needle)
    		posR     = gstr.PosRRune(haystack, needle)
    	)
    	fmt.Println(posI)
    	fmt.Println(posR)
    
    	// Output:
    	// 0
    	// 22
    }


PosRI

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

  • 格式:

    Code Block
    languagego
    PosRI(haystack, needle string, startOffset ...int) int


  • 示例:

    Code Block
    languagego
    func ExamplePosRI() {
    	var (
    		haystack = `goframe is very, very easy to use`
    		needle   = `VERY`
    		posI     = gstr.PosI(haystack, needle)
    		posR     = gstr.PosRI(haystack, needle)
    	)
    	fmt.Println(posI)
    	fmt.Println(posR)
    
    	// Output:
    	// 11
    	// 17
    }


PosRIRune

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

  • 格式:

    Code Block
    languagego
    PosRIRune(haystack, needle string, startOffset ...int) int


  • 示例:

    Code Block
    languagego
    func ExamplePosRIRune() {
    	var (
    		haystack = `GoFrame是一款模块化、高性能、企业级的Go基础开发框架`
    		needle   = `GO`
    		posI     = gstr.PosIRune(haystack, needle)
    		posR     = gstr.PosRIRune(haystack, needle)
    	)
    	fmt.Println(posI)
    	fmt.Println(posR)
    
    	// Output:
    	// 0
    	// 22
    }


查找替换

Replace

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

  • 格式:

    Code Block
    languagego
    Replace(origin, search, replace string, count ...int) string


  • 示例:

    Code Block
    languagego
    func ExampleReplace() {
    	var (
    		origin  = `golang is very nice!`
    		search  = `golang`
    		replace = `goframe`
    		result  = gstr.Replace(origin, search, replace)
    	)
    	fmt.Println(result)
    
    	// Output:
    	// goframe is very nice!
    }


ReplaceI

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

  • 格式:

    Code Block
    languagego
    ReplaceI(origin, search, replace string, count ...int) string


  • 示例:

    Code Block
    languagego
    func ExampleReplaceI() {
    	var (
    		origin  = `golang is very nice!`
    		search  = `GOLANG`
    		replace = `goframe`
    		result  = gstr.ReplaceI(origin, search, replace)
    	)
    	fmt.Println(result)
    
    	// Output:
    	// goframe is very nice!
    }


ReplaceByArray

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

  • 格式:

    Code Block
    languagego
    ReplaceByArray(origin string, array []string) string


  • 示例:

    Code Block
    languagego
    func ExampleReplaceByArray() {
    	{
    		var (
    			origin = `golang is very nice`
    			array  = []string{"lang", "frame"}
    			result = gstr.ReplaceByArray(origin, array)
    		)
    		fmt.Println(result)
    	}
    	{
    		var (
    			origin = `golang is very good`
    			array  = []string{"golang", "goframe", "good", "nice"}
    			result = gstr.ReplaceByArray(origin, array)
    		)
    		fmt.Println(result)
    	}
    
    	// Output:
    	// goframe is very nice
    	// goframe is very nice
    }


ReplaceIByArray

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

  • 格式:

    Code Block
    languagego
    ReplaceIByArray(origin string, array []string) string


  • 示例:

    Code Block
    languagego
    func ExampleReplaceIByArray() {
    	var (
    		origin = `golang is very Good`
    		array  = []string{"Golang", "goframe", "GOOD", "nice"}
    		result = gstr.ReplaceIByArray(origin, array)
    	)
    
    	fmt.Println(result)
    
    	// Output:
    	// goframe is very nice
    }


ReplaceByMap

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

  • 格式:

    Code Block
    languagego
    ReplaceByMap(origin string, replaces map[string]string) string


  • 示例:

    Code Block
    languagego
    func ExampleReplaceByMap() {
    	{
    		var (
    			origin   = `golang is very nice`
    			replaces = map[string]string{
    				"lang": "frame",
    			}
    			result = gstr.ReplaceByMap(origin, replaces)
    		)
    		fmt.Println(result)
    	}
    	{
    		var (
    			origin   = `golang is very good`
    			replaces = map[string]string{
    				"golang": "goframe",
    				"good":   "nice",
    			}
    			result = gstr.ReplaceByMap(origin, replaces)
    		)
    		fmt.Println(result)
    	}
    
    	// Output:
    	// goframe is very nice
    	// goframe is very nice
    }


ReplaceIByMap

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

  • 格式:

    Code Block
    languagego
    ReplaceIByMap(origin string, replaces map[string]string) string


  • 示例:

    Code Block
    languagego
    func ExampleReplaceIByMap() {
    	var (
    		origin   = `golang is very nice`
    		replaces = map[string]string{
    			"Lang": "frame",
    		}
    		result = gstr.ReplaceIByMap(origin, replaces)
    	)
    	fmt.Println(result)
    
    	// Output:
    	// goframe is very nice
    }


子串截取

Str

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

  • 格式:

    Code Block
    languagego
    Str(haystack string, needle string) string


  • 示例:

    Code Block
    languagego
    func ExampleStr() {
    	var (
    		haystack = `xxx.jpg`
    		needle   = `.`
    		result   = gstr.Str(haystack, needle)
    	)
    	fmt.Println(result)
    
    	// Output:
    	// .jpg
    }


StrEx

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

  • 格式:

    Code Block
    languagego
    StrEx(haystack string, needle string) string


  • 示例:

    Code Block
    languagego
    func ExampleStrEx() {
    	var (
    		haystack = `https://goframe.org/index.html?a=1&b=2`
    		needle   = `?`
    		result   = gstr.StrEx(haystack, needle)
    	)
    	fmt.Println(result)
    
    	// Output:
    	// a=1&b=2
    }


StrTill

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

  • 格式:

    Code Block
    languagego
    StrTill(haystack string, needle string) string


  • 示例:

    Code Block
    languagego
    func ExampleStrTill() {
    	var (
    		haystack = `https://goframe.org/index.html?test=123456`
    		needle   = `?`
    		result   = gstr.StrTill(haystack, needle)
    	)
    	fmt.Println(result)
    
    	// Output:
    	// https://goframe.org/index.html?
    }


StrTillEx

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

  • 格式:

    Code Block
    languagego
    StrTillEx(haystack string, needle string) string


  • 示例:

    Code Block
    languagego
    func ExampleStrTillEx() {
    	var (
    		haystack = `https://goframe.org/index.html?test=123456`
    		needle   = `?`
    		result   = gstr.StrTillEx(haystack, needle)
    	)
    	fmt.Println(result)
    
    	// Output:
    	// https://goframe.org/index.html
    }


SubStr

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

  • 格式:

    Code Block
    languagego
    SubStr(str string, start int, length ...int) (substr string)


  • 示例:

    Code Block
    languagego
    func ExampleSubStr() {
    	var (
    		str    = `1234567890`
    		start  = 0
    		length = 4
    		subStr = gstr.SubStr(str, start, length)
    	)
    	fmt.Println(subStr)
    
    	// Output:
    	// 1234
    }


SubStrRune

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

  • 格式:

    Code Block
    languagego
    SubStrRune(str string, start int, length ...int) (substr string)


  • 示例:

    Code Block
    languagego
    func ExampleSubStrRune() {
    	var (
    		str    = `GoFrame是一款模块化、高性能、企业级的Go基础开发框架。`
    		start  = 14
    		length = 3
    		subStr = gstr.SubStrRune(str, start, length)
    	)
    	fmt.Println(subStr)
    
    	// Output:
    	// 高性能
    }


StrLimit

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

  • 格式:

    Code Block
    languagego
    StrLimit(str string, length int, suffix ...string) string


  • 示例:

    Code Block
    languagego
    func ExampleStrLimit() {
    	var (
    		str    = `123456789`
    		length = 3
    		suffix = `...`
    		result = gstr.StrLimit(str, length, suffix)
    	)
    	fmt.Println(result)
    
    	// Output:
    	// 123...
    }


StrLimitRune

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

  • 格式:

    Code Block
    languagego
    StrLimitRune(str string, length int, suffix ...string) string


  • 示例:

    Code Block
    languagego
    func ExampleStrLimitRune() {
    	var (
    		str    = `GoFrame是一款模块化、高性能、企业级的Go基础开发框架。`
    		length = 17
    		suffix = "..."
    		result = gstr.StrLimitRune(str, length, suffix)
    	)
    	fmt.Println(result)
    
    	// Output:
    	// GoFrame是一款模块化、高性能...
    }


SubStrFrom

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

  • 格式:

    Code Block
    languagego
    SubStrFrom(str string, need string) (substr string)


  • 示例:

    Code Block
    languagego
    func ExampleSubStrFrom() {
    	var (
    		str  = "我爱GoFrameGood"
    		need = `爱`
    	)
    
    	fmt.Println(gstr.SubStrFrom(str, need))
    
    	// Output:
    	// 爱GoFrameGood
    }


SubStrFromEx

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

  • 格式:

    Code Block
    languagego
    SubStrFromEx(str string, need string) (substr string)


  • 示例:

    Code Block
    languagego
    func ExampleSubStrFromEx() {
    	var (
    		str  = "我爱GoFrameGood"
    		need = `爱`
    	)
    
    	fmt.Println(gstr.SubStrFromEx(str, need))
    
    	// Output:
    	// GoFrameGood
    }


SubStrFromR

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

  • 格式:

    Code Block
    languagego
    SubStrFromR(str string, need string) (substr string)


  • 示例:

    Code Block
    languagego
    func ExampleSubStrFromR() {
    	var (
    		str  = "我爱GoFrameGood"
    		need = `Go`
    	)
    
    	fmt.Println(gstr.SubStrFromR(str, need))
    
    	// Output:
    	// Good
    }


SubStrFromREx

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

  • 格式:

    Code Block
    languagego
    SubStrFromREx(str string, need string) (substr string)


  • 示例:

    Code Block
    languagego
    func ExampleSubStrFromREx() {
    	var (
    		str  = "我爱GoFrameGood"
    		need = `Go`
    	)
    
    	fmt.Println(gstr.SubStrFromREx(str, need))
    
    	// Output:
    	// od
    }


字符/子串过滤

Trim

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

  • 格式:

    Code Block
    languagego
    Trim(str string, characterMask ...string) string


  • 示例:

    Code Block
    languagego
    func ExampleTrim() {
    	var (
    		str           = `*Hello World*`
    		characterMask = "*"
    		result        = gstr.Trim(str, characterMask)
    	)
    	fmt.Println(result)
    
    	// Output:
    	// Hello World
    }


TrimStr

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

  • 格式:

    Code Block
    languagego
    TrimStr(str string, cut string, count ...int) string


  • 示例:

    Code Block
    languagego
    func ExampleTrimStr() {
    	var (
    		str    = `Hello World`
    		cut    = "World"
    		count  = -1
    		result = gstr.TrimStr(str, cut, count)
    	)
    	fmt.Println(result)
    
    	// Output:
    	// Hello
    }


TrimLeft

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

  • 格式:

    Code Block
    languagego
    TrimLeft(str string, characterMask ...string) string


  • 示例:

    Code Block
    languagego
    func ExampleTrimLeft() {
    	var (
    		str           = `*Hello World*`
    		characterMask = "*"
    		result        = gstr.TrimLeft(str, characterMask)
    	)
    	fmt.Println(result)
    
    	// Output:
    	// Hello World*
    }


TrimLeftStr

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

  • 格式:

    Code Block
    languagego
    TrimLeftStr(str string, cut string, count ...int) string


  • 示例:

    Code Block
    languagego
    func ExampleTrimLeftStr() {
    	var (
    		str    = `**Hello World**`
    		cut    = "*"
    		count  = 1
    		result = gstr.TrimLeftStr(str, cut, count)
    	)
    	fmt.Println(result)
    
    	// Output:
    	// *Hello World**
    }


TrimRight

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

  • 格式:

    Code Block
    languagego
    TrimRight(str string, characterMask ...string) string


  • 示例:

    Code Block
    languagego
    func ExampleTrimRight() {
    	var (
    		str           = `**Hello World**`
    		characterMask = "*def" // []byte{"*", "d", "e", "f"}
    		result        = gstr.TrimRight(str, characterMask)
    	)
    	fmt.Println(result)
    
    	// Output:
    	// **Hello Worl
    }


TrimRightStr

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

  • 格式:

    Code Block
    languagego
    TrimRightStr(str string, cut string, count ...int) string


  • 示例:

    Code Block
    languagego
    func ExampleTrimRightStr() {
    	var (
    		str    = `Hello World!`
    		cut    = "!"
    		count  = -1
    		result = gstr.TrimRightStr(str, cut, count)
    	)
    	fmt.Println(result)
    
    	// Output:
    	// Hello World
    }


TrimAll

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

  • 格式:

    Code Block
    languagego
    TrimAll(str string, characterMask ...string) string


  • 示例:

    Code Block
    languagego
    func ExampleTrimAll() {
    	var (
    		str           = `*Hello World*`
    		characterMask = "*"
    		result        = gstr.TrimAll(str, characterMask)
    	)
    	fmt.Println(result)
    
    	// Output:
    	// HelloWorld
    }


HasPrefix

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

  • 格式:

    Code Block
    languagego
    HasPrefix(s, prefix string) bool


  • 示例:

    Code Block
    languagego
    func ExampleHasPrefix() {
    	var (
    		s      = `Hello World`
    		prefix = "Hello"
    		result = gstr.HasPrefix(s, prefix)
    	)
    	fmt.Println(result)
    
    	// Output:
    	// true
    }


HasSuffix

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

  • 格式:

    Code Block
    languagego
    HasSuffix(s, suffix string) bool


  • 示例:

    Code Block
    languagego
    func ExampleHasSuffix() {
    	var (
    		s      = `my best love is goframe`
    		prefix = "goframe"
    		result = gstr.HasSuffix(s, prefix)
    	)
    	fmt.Println(result)
    
    	// Output:
    	// true
    }


版本比较

CompareVersion

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

  • 格式:

    Code Block
    languagego
    CompareVersion(a, b string) int


  • 示例:

    Code Block
    languagego
    func ExampleCompareVersion() {
    	fmt.Println(gstr.CompareVersion("v2.11.9", "v2.10.8"))
    	fmt.Println(gstr.CompareVersion("1.10.8", "1.19.7"))
    	fmt.Println(gstr.CompareVersion("2.8.beta", "2.8"))
    
    	// Output:
    	// 1
    	// -1
    	// 0
    }


CompareVersionGo

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

  • 格式:

    Code Block
    languagego
    CompareVersionGo(a, b string) int


  • 示例:

    Code Block
    languagego
    func ExampleCompareVersionGo() {
    	fmt.Println(gstr.CompareVersionGo("v2.11.9", "v2.10.8"))
    	fmt.Println(gstr.CompareVersionGo("v4.20.1", "v4.20.1+incompatible"))
    	fmt.Println(gstr.CompareVersionGo(
    		"v0.0.2-20180626092158-b2ccc119800e",
    		"v1.0.1-20190626092158-b2ccc519800e",
    	))
    
    	// Output:
    	// 1
    	// 1
    	// -1
    }


相似计算

Levenshtein

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

  • 格式:

    Code Block
    languagego
    Levenshtein(str1, str2 string, costIns, costRep, costDel int) int


  • 示例:

    Code Block
    languagego
    func ExampleLevenshtein() {
    	var (
    		str1    = "Hello World"
    		str2    = "hallo World"
    		costIns = 1
    		costRep = 1
    		costDel = 1
    		result  = gstr.Levenshtein(str1, str2, costIns, costRep, costDel)
    	)
    	fmt.Println(result)
    
    	// Output:
    	// 2
    }


SimilarText

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

  • 格式:

    Code Block
    languagego
    SimilarText(first, second string, percent *float64) int


  • 示例:

    Code Block
    languagego
    func ExampleSimilarText() {
    	var (
    		first   = `AaBbCcDd`
    		second  = `ad`
    		percent = 0.80
    		result  = gstr.SimilarText(first, second, &percent)
    	)
    	fmt.Println(result)
    
    	// Output:
    	// 2
    }


Soundex

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

  • 格式:

    Code Block
    languagego
    Soundex(str string) string


  • 示例:

    Code Block
    languagego
    func ExampleSoundex() {
    	var (
    		str1    = `Hello`
    		str2    = `Hallo`
    		result1 = gstr.Soundex(str1)
    		result2 = gstr.Soundex(str2)
    	)
    	fmt.Println(result1, result2)
    
    	// Output:
    	// H400 H400
    }





Panel
titleContent Menu

Table of Contents