gstr
提供了强大便捷的文本处理组件,组件内置了大量常用的字符串处理方法,比较于Golang
标准库更加全面丰富,可应对绝大部分业务场景。
使用方式:
import "github.com/gogf/gf/v2/text/gstr" |
接口文档:
https://pkg.go.dev/github.com/gogf/gf/v2/text/gstr
以下常用方法列表,文档更新可能滞后于代码新特性,更多的方法及示例请参考代码文档:https://pkg.go.dev/github.com/gogf/gf/v2/text/gstr |
IsNumeric
说明:IsNumeric
验证字符串s
是否为数字。
格式:
IsNumeric(s string) bool |
示例:
func ExampleIsNumeric() { fmt.Println(gstr.IsNumeric("88")) fmt.Println(gstr.IsNumeric("3.1415926")) fmt.Println(gstr.IsNumeric("abc")) // Output: // true // true // false } |
LenRune
说明:LenRune
返回unicode
字符串长度。
格式:
LenRune(str string) int |
示例:
func ExampleLenRune() { var ( str = `GoFrame框架` result = gstr.LenRune(str) ) fmt.Println(result) // Output: // 9 } |
Repeat
说明:Repeat
返回一个由input
重复multiplier
次后组成的新字符串。
格式:
Repeat(input string, multiplier int) string |
示例:
func ExampleRepeat() { var ( input = `goframe ` multiplier = 3 result = gstr.Repeat(input, multiplier) ) fmt.Println(result) // Output: // goframe goframe goframe } |
ToLower
说明:ToLower
将s
中所有Unicode
字符都变为小写并返回其副本。
格式:
ToLower(s string) string |
示例:
func ExampleToLower() { var ( s = `GOFRAME` result = gstr.ToLower(s) ) fmt.Println(result) // Output: // goframe } |
ToUpper
说明:ToUpper
将s
中所有Unicode
字符都变为大写并返回其副本。
格式:
ToUpper(s string) string |
示例:
func ExampleToUpper() { var ( s = `goframe` result = gstr.ToUpper(s) ) fmt.Println(result) // Output: // GOFRAME } |
UcFirst
说明:UcFirst
将s
中首字符变为大写并返回其副本。
格式:
UcFirst(s string) string |
示例:
func ExampleUcFirst() { var ( s = `hello` result = gstr.UcFirst(s) ) fmt.Println(result) // Output: // Hello } |
LcFirst
说明:LcFirst
将s
中首字符变为小写并返回其副本。
格式:
LcFirst(s string) string |
示例:
func ExampleLcFirst() { var ( str = `Goframe` result = gstr.LcFirst(str) ) fmt.Println(result) // Output: // goframe } |
UcWords
说明:UcWords
将字符串str
中每个单词的第一个字符变为大写。
格式:
UcWords(str string) string |
示例:
func ExampleUcWords() { var ( str = `hello world` result = gstr.UcWords(str) ) fmt.Println(result) // Output: // Hello World } |
IsLetterLower
说明:IsLetterLower
验证给定的字符b
是否是小写字符。
格式:
IsLetterLower(b byte) bool |
示例:
func ExampleIsLetterLower() { fmt.Println(gstr.IsLetterLower('a')) fmt.Println(gstr.IsLetterLower('A')) // Output: // true // false } |
IsLetterUpper
说明:IsLetterUpper
验证字符b
是否是大写字符。
格式:
IsLetterUpper(b byte) bool |
示例:
func ExampleIsLetterUpper() { fmt.Println(gstr.IsLetterUpper('A')) fmt.Println(gstr.IsLetterUpper('a')) // Output: // true // false } |
Compare
说明:Compare
返回一个按字典顺序比较两个字符串的整数。 如果a == b
,结果为0
,如果a < b
,结果为-1
,如果a > b
,结果为+1
。
格式:
Compare(a, b string) int |
示例:
func ExampleCompare() { fmt.Println(gstr.Compare("c", "c")) fmt.Println(gstr.Compare("a", "b")) fmt.Println(gstr.Compare("c", "b")) // Output: // 0 // -1 // 1 } |
Equal
说明:Equal
返回a
和b
在不区分大小写的情况下是否相等。
格式:
Equal(a, b string) bool |
示例:
func ExampleEqual() { fmt.Println(gstr.Equal(`A`, `a`)) fmt.Println(gstr.Equal(`A`, `A`)) fmt.Println(gstr.Equal(`A`, `B`)) // Output: // true // true // false } |
Split
说明:Split
用delimiter
将str
拆分为[]string
。
格式:
Split(str, delimiter string) []string |
示例:
func ExampleSplit() { var ( str = `a|b|c|d` delimiter = `|` result = gstr.Split(str, delimiter) ) fmt.Printf(`%#v`, result) // Output: // []string{"a", "b", "c", "d"} } |
SplitAndTrim
说明: SplitAndTrim
使用delimiter
将str
拆分为[]string
,并对[]string
的每个元素调用Trim
,并忽略在Trim
之后为空的元素。
格式:
SplitAndTrim(str, delimiter string, characterMask ...string) []string |
示例:
func ExampleSplitAndTrim() { var ( str = `a|b|||||c|d` delimiter = `|` result = gstr.SplitAndTrim(str, delimiter) ) fmt.Printf(`%#v`, result) // Output: // []string{"a", "b", "c", "d"} } |
Join
说明:Join
将array
中的每一个元素连接并生成一个新的字符串。参数sep
会作为新字符串的分隔符。
格式:
Join(array []string, sep string) string |
示例:
func ExampleJoin() { var ( array = []string{"goframe", "is", "very", "easy", "to", "use"} sep = ` ` result = gstr.Join(array, sep) ) fmt.Println(result) // Output: // goframe is very easy to use } |
JoinAny
说明:JoinAny
将array
中的每一个元素连接并生成一个新的字符串。参数sep
会作为新字符串的分隔符。参数array
可以是任意的类型。
格式:
JoinAny(array interface{}, sep string) string |
示例:
func ExampleJoinAny() { var ( sep = `,` arr2 = []int{99, 73, 85, 66} result = gstr.JoinAny(arr2, sep) ) fmt.Println(result) // Output: // 99,73,85,66 } |
Explode
说明:Explode
使用分隔符delimiter
字符串str
拆分成[]string
格式:
Explode(delimiter, str string) []string |
示例:
func ExampleExplode() { var ( str = `Hello World` delimiter = " " result = gstr.Explode(delimiter, str) ) fmt.Printf(`%#v`, result) // Output: // []string{"Hello", "World"} } |
Implode
说明:Implode
使用glue
连接pieces
字符串数组的每一个元素。
格式:
Implode(glue string, pieces []string) string |
示例:
func ExampleImplode() { var ( pieces = []string{"goframe", "is", "very", "easy", "to", "use"} glue = " " result = gstr.Implode(glue, pieces) ) fmt.Println(result) // Output: // goframe is very easy to use } |
ChunkSplit
说明:ChunkSplit
将字符串拆分为单位为chunkLen
长度更小的每一份,并用end
连接每一份拆分出的字符串。
格式:
ChunkSplit(body string, chunkLen int, end string) string |
示例:
func ExampleChunkSplit() { var ( body = `1234567890` chunkLen = 2 end = "#" result = gstr.ChunkSplit(body, chunkLen, end) ) fmt.Println(result) // Output: // 12#34#56#78#90# } |
Fields
说明:Fields
以[]string
的形式返回字符串中的每个单词。
格式:
Fields(str string) []string |
示例:
func ExampleFields() { var ( str = `Hello World` result = gstr.Fields(str) ) fmt.Printf(`%#v`, result) // Output: // []string{"Hello", "World"} } |
AddSlashes
说明:AddSlashes
将字符串中的符号前添加转义字符'\'
格式:
AddSlashes(str string) string |
示例:
func ExampleAddSlashes() { var ( str = `'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
中的转义字符'\'
。
格式:
StripSlashes(str string) string |
示例:
func ExampleStripSlashes() { var ( str = `C:\\windows\\GoFrame\\test` result = gstr.StripSlashes(str) ) fmt.Println(result) // Output: // C:\windows\GoFrame\test } |
QuoteMeta
说明:QuoteMeta
为str中'. \ + * ? [ ^ ] ( $ )
中的每个字符前添加一个转义字符'\'。
格式:
QuoteMeta(str string, chars ...string) string |
示例:
func ExampleQuoteMeta() { { var ( str = `.\+?[^]()` result = gstr.QuoteMeta(str) ) fmt.Println(result) } { var ( str = `https://goframe.org/pages/viewpage.action?pageId=1114327` result = gstr.QuoteMeta(str) ) fmt.Println(result) } // Output: // \.\\\+\?\[\^\]\(\) // https://goframe\.org/pages/viewpage\.action\?pageId=1114327 } |
Count
说明:Count
计算substr
在s
中出现的次数。 如果在s
中没有找到substr
,则返回0
。
格式:
Count(s, substr string) int |
示例:
func ExampleCount() { var ( str = `goframe is very, very easy to use` substr1 = "goframe" substr2 = "very" result1 = gstr.Count(str, substr1) result2 = gstr.Count(str, substr2) ) fmt.Println(result1) fmt.Println(result2) // Output: // 1 // 2 } |
CountI
说明:Count
计算substr
在s
中出现的次数,不区分大小写。 如果在s
中没有找到substr
,则返回0
。
格式:
CountI(s, substr string) int |
示例:
func ExampleCountI() { var ( str = `goframe is very, very easy to use` substr1 = "GOFRAME" substr2 = "VERY" result1 = gstr.CountI(str, substr1) result2 = gstr.CountI(str, substr2) ) fmt.Println(result1) fmt.Println(result2) // Output: // 1 // 2 } |
CountWords
说明:CountWords
以map[string]int
的形式返回str
中使用的单词的统计信息。
格式:
CountWords(str string) map[string]int |
示例:
func ExampleCountWords() { var ( str = `goframe is very, very easy to use!` result = gstr.CountWords(str) ) fmt.Printf(`%#v`, result) // Output: // map[string]int{"easy":1, "goframe":1, "is":1, "to":1, "use!":1, "very":1, "very,":1} } |
CountChars
说明:CountChars
以map[string]int
的形式返回str
中使用的字符的统计信息。noSpace
参数可以控制是否计算空格。
格式:
CountChars(str string, noSpace ...bool) map[string]int |
示例:
func ExampleCountChars() { var ( str = `goframe` result = gstr.CountChars(str) ) fmt.Println(result) // May Output: // map[a:1 e:1 f:1 g:1 m:1 o:1 r:1] } |
SearchArray
说明:SearchArray
在[]string 'a'
中区分大小写地搜索字符串's'
,返回其在'a'
中的索引。 如果在'a'
中没有找到's'
,则返回-1
。
格式:
SearchArray(a []string, s string) int |
示例:
func ExampleSearchArray() { var ( array = []string{"goframe", "is", "very", "nice"} str = `goframe` result = gstr.SearchArray(array, str) ) fmt.Println(result) // Output: // 0 } |
InArray
说明:InArray校验
[]string 'a'
中是否有字符串' s '
。
格式:
InArray(a []string, s string) bool |
示例:
func ExampleInArray() { var ( a = []string{"goframe", "is", "very", "easy", "to", "use"} s = "goframe" result = gstr.InArray(a, s) ) fmt.Println(result) // Output: // true } |
PrefixArray
说明:PrefixArray
位[]string array
的每一个字符串添加'prefix'
的前缀。
格式:
PrefixArray(array []string, prefix string) |
示例:
func ExamplePrefixArray() { var ( strArray = []string{"tom", "lily", "john"} ) gstr.PrefixArray(strArray, "classA_") fmt.Println(strArray) // Output: // [classA_tom classA_lily classA_john] } |
CaseCamel
说明:CaseCamel
将字符串转换为大驼峰形式(首字母大写)。
格式:
CaseCamel(s string) string |
示例:
func ExampleCaseCamel() { var ( str = `hello world` result = gstr.CaseCamel(str) ) fmt.Println(result) // Output: // HelloWorld } |
CaseCamelLower
说明:CaseCamelLower
将字符串转换为小驼峰形式(首字母小写)。
格式:
CaseCamelLower(s string) string |
示例:
func ExampleCaseCamelLower() { var ( str = `hello world` result = gstr.CaseCamelLower(str) ) fmt.Println(result) // Output: // helloWorld } |
CaseSnake
说明:CaseSnake
将字符串转换中的符号(下划线,空格,点,中横线)用下划线( _
)替换,并全部转换为小写字母。
格式:
CaseSnake(s string) string |
示例:
func ExampleCaseSnake() { var ( str = `hello world` result = gstr.CaseSnake(str) ) fmt.Println(result) // Output: // hello_world } |
CaseSnakeScreaming
说明:CaseSnakeScreaming
把字符串中的符号(下划线,空格,点,中横线),全部替换为下划线'_'
,并将所有英文字母转为大写。
格式:
CaseSnakeScreaming(s string) string |
示例:
func ExampleCaseSnakeScreaming() { var ( str = `hello world` result = gstr.CaseSnakeScreaming(str) ) fmt.Println(result) // Output: // HELLO_WORLD } |
CaseSnakeFirstUpper
说明:CaseSnakeFirstUpper
将字符串中的字母为大写时,将大写字母转换为小写字母并在其前面增加一个下划线'_'
,首字母大写时,只转换为小写,前面不增加下划线'_'
。
格式:
CaseSnakeFirstUpper(word string, underscore ...string) string |
示例:
func ExampleCaseSnakeFirstUpper() { var ( str = `RGBCodeMd5` result = gstr.CaseSnakeFirstUpper(str) ) fmt.Println(result) // Output: // rgb_code_md5 } |
CaseKebab
说明:CaseKebab
将字符串转换中的符号(下划线,空格,点,)用中横线'-'
替换,并全部转换为小写字母。
格式:
CaseKebab(s string) string |
示例:
func ExampleCaseKebab() { var ( str = `hello world` result = gstr.CaseKebab(str) ) fmt.Println(result) // Output: // hello-world } |
CaseKebabScreaming
说明:CaseKebabScreaming
将字符串转换中的符号(下划线,空格,点,中横线)用中横线'-'
替换,并全部转换为大写字母。
格式:
CaseKebabScreaming(s string) string |
示例:
func ExampleCaseKebabScreaming() { var ( str = `hello world` result = gstr.CaseKebabScreaming(str) ) fmt.Println(result) // Output: // HELLO-WORLD } |
CaseDelimited
说明:CaseDelimited
将字符串转换中的符号进行替换。
格式:
CaseDelimited(s string, del byte) string |
示例:
func ExampleCaseDelimited() { var ( str = `hello world` del = byte('-') result = gstr.CaseDelimited(str, del) ) fmt.Println(result) // Output: // hello-world } |
CaseDelimitedScreaming
说明:CaseDelimitedScreaming
将字符串中的符号(空格,下划线,点,中横线)用第二个参数进行替换,该函数第二个参数为替换的字符,第三个参数为大小写转换,true
为全部转换大写字母,false
为全部转为小写字母。
格式:
CaseDelimitedScreaming(s string, del uint8, screaming bool) string |
示例:
func ExampleCaseDelimitedScreaming() { { var ( str = `hello world` del = byte('-') result = gstr.CaseDelimitedScreaming(str, del, true) ) fmt.Println(result) } { var ( str = `hello world` del = byte('-') result = gstr.CaseDelimitedScreaming(str, del, false) ) fmt.Println(result) } // Output: // HELLO-WORLD // hello-world } |
Contains
说明:Contains
返回字符串str
是否包含子字符串substr
,区分大小写。
格式:
Contains(str, substr string) bool |
示例:
func ExampleContains() { { var ( str = `Hello World` substr = `Hello` result = gstr.Contains(str, substr) ) fmt.Println(result) } { var ( str = `Hello World` substr = `hello` result = gstr.Contains(str, substr) ) fmt.Println(result) } // Output: // true // false } |
ContainsI
说明:ContainsI
校验substr
是否在str
中,不区分大小写。
格式:
ContainsI(str, substr string) bool |
示例:
func ExampleContainsI() { var ( str = `Hello World` substr = "hello" result1 = gstr.Contains(str, substr) result2 = gstr.ContainsI(str, substr) ) fmt.Println(result1) fmt.Println(result2) // Output: // false // true } |
ContainsAny
说明:ContainsAny
校验s
中是否包含chars
。
格式:
ContainsAny(s, chars string) bool |
示例:
func ExampleContainsAny() { { var ( s = `goframe` chars = "g" result = gstr.ContainsAny(s, chars) ) fmt.Println(result) } { var ( s = `goframe` chars = "G" result = gstr.ContainsAny(s, chars) ) fmt.Println(result) } // Output: // true // false } |
Chr
说明:Chr
返回一个数字0-255
对应的ascii
字符串。
格式:
Chr(ascii int) string |
示例:
func ExampleChr() { var ( ascii = 65 // A result = gstr.Chr(ascii) ) fmt.Println(result) // Output: // A } |
Ord
说明:Ord
将字符串的第一个字节转换为0-255
之间的值。
格式:
Ord(char string) int |
示例:
func ExampleOrd() { var ( str = `goframe` result = gstr.Ord(str) ) fmt.Println(result) // Output: // 103 } |
OctStr
说明:OctStr
将字符串str
中的八进制字符串转换为其原始字符串。
格式:
OctStr(str string) string |
示例:
func ExampleOctStr() { var ( str = `\346\200\241` result = gstr.OctStr(str) ) fmt.Println(result) // Output: // 怡 } |
Reverse
说明:Reverse
返回str
的反转字符串。
格式:
Reverse(str string) string |
示例:
func ExampleReverse() { var ( str = `123456` result = gstr.Reverse(str) ) fmt.Println(result) // Output: // 654321 } |
NumberFormat
说明:NumberFormat
以千位分组来格式化数字。
decimal
设置小数点的个数。 decPoint
设置小数点的分隔符。 参数thousand
设置千位分隔符。
格式:
NumberFormat(number float64, decimals int, decPoint, thousandsSep string) string |
示例:
func ExampleNumberFormat() { var ( number float64 = 123456 decimals = 2 decPoint = "." thousandsSep = "," result = gstr.NumberFormat(number, decimals, decPoint, thousandsSep) ) fmt.Println(result) // Output: // 123,456.00 } |
Shuffle
说明:Shuffle
返回将str
随机打散后的字符串。
格式:
Shuffle(str string) string |
示例:
func ExampleShuffle() { var ( str = `123456` result = gstr.Shuffle(str) ) fmt.Println(result) // May Output: // 563214 } |
HideStr
说明:HideStr
将字符串str
从中间字符开始,百分比percent
的字符转换成hide
字符串。
格式:
HideStr(str string, percent int, hide string) string |
示例:
func ExampleHideStr() { var ( str = `13800138000` percent = 40 hide = `*` result = gstr.HideStr(str, percent, hide) ) fmt.Println(result) // Output: // 138****8000 } |
Nl2Br
说明:Nl2Br
在字符串中的所有换行符之前插入HTML
换行符(' br ' |<br />): \n\r, \r\n, \r, \n
。
格式:
Nl2Br(str string, isXhtml ...bool) string |
示例:
func ExampleNl2Br() { var ( str = `goframe is very easy to use` result = gstr.Nl2Br(str) ) fmt.Println(result) // Output: // goframe<br>is<br>very<br>easy<br>to<br>use } |
WordWrap
说明:WordWrap
使用换行符将str
换行到给定字符数(不会切分单词)。
格式:
WordWrap(str string, width int, br string) string |
示例:
func ExampleWordWrap() { { var ( str = `A very long woooooooooooooooooord. and something` width = 8 br = "\n" result = gstr.WordWrap(str, width, br) ) fmt.Println(result) } { var ( str = `The quick brown fox jumped over the lazy dog.` width = 20 br = "<br />\n" result = gstr.WordWrap(str, width, br) ) fmt.Printf("%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
中的'*'
。
格式:
IsSubDomain(subDomain string, mainDomain string) bool |
示例:
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{}
类型返回。
格式:
Parse(s string) (result map[string]interface{}, err error) |
示例:
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
返回needle
在haystack
中第一次出现的位置,区分大小写。 如果没有找到,则返回-1。
格式:
Pos(haystack, needle string, startOffset ...int) int |
示例:
func ExamplePos() { var ( haystack = `Hello World` needle = `World` result = gstr.Pos(haystack, needle) ) fmt.Println(result) // Output: // 6 } |
PosRune
说明:PosRune
的作用于函数Pos
相似,但支持haystack
和needle
为unicode
字符串。
格式:
PosRune(haystack, needle string, startOffset ...int) int |
示例:
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
返回needle
在haystack
中第一次出现的位置,不区分大小写。 如果没有找到,则返回-1。
格式:
PosI(haystack, needle string, startOffset ...int) int |
示例:
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
相似,但支持haystack
和needle
为unicode
字符串。
格式:
PosIRune(haystack, needle string, startOffset ...int) int |
示例:
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
返回needle
在haystack
中最后一次出现的位置,区分大小写。 如果没有找到,则返回-1。
格式:
PosR(haystack, needle string, startOffset ...int) int |
示例:
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
相似,但支持haystack
和needle
为unicode
字符串。
格式:
PosRRune(haystack, needle string, startOffset ...int) int |
示例:
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
返回needle
在haystack
中最后一次出现的位置,不区分大小写。 如果没有找到,则返回-1。
格式:
PosRI(haystack, needle string, startOffset ...int) int |
示例:
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
相似,但支持haystack
和needle
为unicode
字符串。
格式:
PosRIRune(haystack, needle string, startOffset ...int) int |
示例:
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
字符串中, search
被replace
替换后的新字符串。search
区分大小写。
格式:
Replace(origin, search, replace string, count ...int) string |
示例:
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
字符串中, search
被replace
替换后的新字符串。search
不区分大小写。
格式:
ReplaceI(origin, search, replace string, count ...int) string |
示例:
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)
顺序替换的新字符串,区分大小写。
格式:
ReplaceByArray(origin string, array []string) string |
示例:
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)
顺序替换的新字符串,不区分大小写。
格式:
ReplaceIByArray(origin string, array []string) string |
示例:
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
返回origin
中map
的key
替换为value
的新字符串,区分大小写。
格式:
ReplaceByMap(origin string, replaces map[string]string) string |
示例:
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
返回origin
中map
的key
替换为value
的新字符串,不区分大小写。
格式:
ReplaceIByMap(origin string, replaces map[string]string) string |
示例:
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
本身)。
格式:
Str(haystack string, needle string) string |
示例:
func ExampleStr() { var ( haystack = `xxx.jpg` needle = `.` result = gstr.Str(haystack, needle) ) fmt.Println(result) // Output: // .jpg } |
StrEx
说明:StrEx
返回从needle
第一次出现的位置开始,到haystack
结尾的字符串(不包含needle
本身)。
格式:
StrEx(haystack string, needle string) string |
示例:
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
本身)。
格式:
StrTill(haystack string, needle string) string |
示例:
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
本身)。
格式:
StrTillEx(haystack string, needle string) string |
示例:
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
返回字符串str
从start
开始,长度为length
的新字符串。 参数length
是可选的,它默认使用str
的长度。
格式:
SubStr(str string, start int, length ...int) (substr string) |
示例:
func ExampleSubStr() { var ( str = `1234567890` start = 0 length = 4 subStr = gstr.SubStr(str, start, length) ) fmt.Println(subStr) // Output: // 1234 } |
SubStrRune
说明:SubStrRune
返回unicode
字符串str
从start
开始,长度为length
的新字符串。 参数length
是可选的,它默认使用str
的长度。
格式:
SubStrRune(str string, start int, length ...int) (substr string) |
示例:
func ExampleSubStrRune() { var ( str = `GoFrame是一款模块化、高性能、企业级的Go基础开发框架。` start = 14 length = 3 subStr = gstr.SubStrRune(str, start, length) ) fmt.Println(subStr) // Output: // 高性能 } |
StrLimit
说明:StrLimit
取str
字符串开始,长度为length
的字符串,加上suffix...
后返回新的字符串。
格式:
StrLimit(str string, length int, suffix ...string) string |
示例:
func ExampleStrLimit() { var ( str = `123456789` length = 3 suffix = `...` result = gstr.StrLimit(str, length, suffix) ) fmt.Println(result) // Output: // 123... } |
StrLimitRune
说明:StrLimitRune
取unicode
字符串str
开始,长度为length
的字符串,加上suffix...
后返回新的字符串。
格式:
StrLimitRune(str string, length int, suffix ...string) string |
示例:
func ExampleStrLimitRune() { var ( str = `GoFrame是一款模块化、高性能、企业级的Go基础开发框架。` length = 17 suffix = "..." result = gstr.StrLimitRune(str, length, suffix) ) fmt.Println(result) // Output: // GoFrame是一款模块化、高性能... } |
SubStrFrom
说明:SubStrFrom
返回字符串str
从第一次出现need
到str
的结尾的字符串(包含need
)。
格式:
SubStrFrom(str string, need string) (substr string) |
示例:
func ExampleSubStrFrom() { var ( str = "我爱GoFrameGood" need = `爱` ) fmt.Println(gstr.SubStrFrom(str, need)) // Output: // 爱GoFrameGood } |
SubStrFromEx
说明:SubStrFromEx
返回字符串str
从第一次出现need
到str
的结尾的字符串(不包含need
)。
格式:
SubStrFromEx(str string, need string) (substr string) |
示例:
func ExampleSubStrFromEx() { var ( str = "我爱GoFrameGood" need = `爱` ) fmt.Println(gstr.SubStrFromEx(str, need)) // Output: // GoFrameGood } |
SubStrFromR
说明:SubStrFromR
返回字符串str
从最后一次出现need
到str
的结尾的字符串(包含need
)。
格式:
SubStrFromR(str string, need string) (substr string) |
示例:
func ExampleSubStrFromR() { var ( str = "我爱GoFrameGood" need = `Go` ) fmt.Println(gstr.SubStrFromR(str, need)) // Output: // Good } |
SubStrFromREx
说明:SubStrFromREx
返回字符串str
从最后一次出现need
到str
的结尾的字符串(不包含need
)。
格式:
SubStrFromREx(str string, need string) (substr string) |
示例:
func ExampleSubStrFromREx() { var ( str = "我爱GoFrameGood" need = `Go` ) fmt.Println(gstr.SubStrFromREx(str, need)) // Output: // od } |
Trim
说明:Trim
从字符串的开头和结尾剪切空白(或其他字符)。 可选参数characterMask
指定额外剥离的字符。
格式:
Trim(str string, characterMask ...string) string |
示例:
func ExampleTrim() { var ( str = `*Hello World*` characterMask = "*d" result = gstr.Trim(str, characterMask) ) fmt.Println(result) // Output: // Hello Worl } |
TrimStr
说明:TrimStr
从字符串的开头和结尾去掉所有cut
字符串(不会删除开头或结尾的空白)。
格式:
TrimStr(str string, cut string, count ...int) string |
示例:
func ExampleTrimStr() { var ( str = `Hello World` cut = "World" count = -1 result = gstr.TrimStr(str, cut, count) ) fmt.Println(result) // Output: // Hello } |
TrimLeft
说明:TrimLeft
将字符串开头的空格(或其他字符)删除。
格式:
TrimLeft(str string, characterMask ...string) string |
示例:
func ExampleTrimLeft() { var ( str = `*Hello World*` characterMask = "*" result = gstr.TrimLeft(str, characterMask) ) fmt.Println(result) // Output: // Hello World* } |
TrimLeftStr
说明:TrimLeftStr
从字符串的开头删除count
个cut
字符串(不会删除开头的空格)。
格式:
TrimLeftStr(str string, cut string, count ...int) string |
示例:
func ExampleTrimLeftStr() { var ( str = `**Hello World**` cut = "*" count = 1 result = gstr.TrimLeftStr(str, cut, count) ) fmt.Println(result) // Output: // *Hello World** } |
TrimRight
说明:TrimRight
从字符串的末尾去掉空白(或其他字符)。
格式:
TrimRight(str string, characterMask ...string) string |
示例:
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
从字符串的尾部删除count
个cut
字符串(不会删除尾部的空格)。
格式:
TrimRightStr(str string, cut string, count ...int) string |
示例:
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
字符。
格式:
TrimAll(str string, characterMask ...string) string |
示例:
func ExampleTrimAll() { var ( str = `*Hello World*` characterMask = "*" result = gstr.TrimAll(str, characterMask) ) fmt.Println(result) // Output: // HelloWorld } |
HasPrefix
说明:HasPrefix
返回s
是否以prefix
开头。
格式:
HasPrefix(s, prefix string) bool |
示例:
func ExampleHasPrefix() { var ( s = `Hello World` prefix = "Hello" result = gstr.HasPrefix(s, prefix) ) fmt.Println(result) // Output: // true } |
HasSuffix
说明:HasSuffix
返回s
是否以suffix
结束。
格式:
HasSuffix(s, suffix string) bool |
示例:
func ExampleHasSuffix() { var ( s = `my best love is goframe` prefix = "goframe" result = gstr.HasSuffix(s, prefix) ) fmt.Println(result) // Output: // true } |
CompareVersion
说明:CompareVersion
将a
和b
作为标准GNU
版本进行比较。
格式:
CompareVersion(a, b string) int |
示例:
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
说明:CompareVersionGo
将a
和b
作为标准的Golang
版本进行比较。
格式:
CompareVersionGo(a, b string) int |
示例:
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
距离。
格式:
Levenshtein(str1, str2 string, costIns, costRep, costDel int) int |
示例:
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
计算两个字符串之间的相似度。
格式:
SimilarText(first, second string, percent *float64) int |
示例:
func ExampleSimilarText() { var ( first = `AaBbCcDd` second = `ad` percent = 0.80 result = gstr.SimilarText(first, second, &percent) ) fmt.Println(result) // Output: // 2 } |
Soundex
说明:Soundex
用于计算字符串的Soundex
键。
格式:
Soundex(str string) string |
示例:
func ExampleSoundex() { var ( str1 = `Hello` str2 = `Hallo` result1 = gstr.Soundex(str1) result2 = gstr.Soundex(str2) ) fmt.Println(result1, result2) // Output: // H400 H400 } |