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