Documentation ¶
Overview ¶
Package gstr provides functions for string handling.
Index ¶
- Constants
- func AddSlashes(str string) string
- func CaseCamel(s string) string
- func CaseCamelLower(s string) string
- func CaseDelimited(s string, del byte) string
- func CaseDelimitedScreaming(s string, del uint8, screaming bool) string
- func CaseKebab(s string) string
- func CaseKebabScreaming(s string) string
- func CaseSnake(s string) string
- func CaseSnakeFirstUpper(word string, underscore ...string) string
- func CaseSnakeScreaming(s string) string
- func Chr(ascii int) string
- func ChunkSplit(body string, chunkLen int, end string) string
- func Compare(a, b string) int
- func CompareVersion(a, b string) int
- func CompareVersionGo(a, b string) int
- func Contains(str, substr string) bool
- func ContainsAny(s, chars string) bool
- func ContainsI(str, substr string) bool
- func Count(s, substr string) int
- func CountChars(str string, noSpace ...bool) map[string]int
- func CountI(s, substr string) int
- func CountWords(str string) map[string]int
- func Equal(a, b string) bool
- func Explode(delimiter, str string) []string
- func Fields(str string) []string
- func HasPrefix(s, prefix string) bool
- func HasSuffix(s, suffix string) bool
- func HideStr(str string, percent int, hide string) string
- func Implode(glue string, pieces []string) string
- func InArray(a []string, s string) bool
- func IsLetterLower(b byte) bool
- func IsLetterUpper(b byte) bool
- func IsNumeric(s string) bool
- func IsSubDomain(subDomain string, mainDomain string) bool
- func Join(array []string, sep string) string
- func JoinAny(array interface{}, sep string) string
- func LcFirst(s string) string
- func LenRune(str string) int
- func Levenshtein(str1, str2 string, costIns, costRep, costDel int) int
- func Nl2Br(str string, isXhtml ...bool) string
- func NumberFormat(number float64, decimals int, decPoint, thousandsSep string) string
- func OctStr(str string) string
- func Ord(char string) int
- func Parse(s string) (result map[string]interface{}, err error)
- func Pos(haystack, needle string, startOffset ...int) int
- func PosI(haystack, needle string, startOffset ...int) int
- func PosIRune(haystack, needle string, startOffset ...int) int
- func PosR(haystack, needle string, startOffset ...int) int
- func PosRI(haystack, needle string, startOffset ...int) int
- func PosRIRune(haystack, needle string, startOffset ...int) int
- func PosRRune(haystack, needle string, startOffset ...int) int
- func PosRune(haystack, needle string, startOffset ...int) int
- func PrefixArray(array []string, prefix string)
- func QuoteMeta(str string, chars ...string) string
- func Repeat(input string, multiplier int) string
- func Replace(origin, search, replace string, count ...int) string
- func ReplaceByArray(origin string, array []string) string
- func ReplaceByMap(origin string, replaces map[string]string) string
- func ReplaceI(origin, search, replace string, count ...int) string
- func ReplaceIByArray(origin string, array []string) string
- func ReplaceIByMap(origin string, replaces map[string]string) string
- func Reverse(str string) string
- func SearchArray(a []string, s string) int
- func Shuffle(str string) string
- func SimilarText(first, second string, percent *float64) int
- func Soundex(str string) string
- func Split(str, delimiter string) []string
- func SplitAndTrim(str, delimiter string, characterMask ...string) []string
- func Str(haystack string, needle string) string
- func StrEx(haystack string, needle string) string
- func StrLimit(str string, length int, suffix ...string) string
- func StrLimitRune(str string, length int, suffix ...string) string
- func StrTill(haystack string, needle string) string
- func StrTillEx(haystack string, needle string) string
- func StripSlashes(str string) string
- func SubStr(str string, start int, length ...int) (substr string)
- func SubStrFrom(str string, need string) (substr string)
- func SubStrFromEx(str string, need string) (substr string)
- func SubStrFromR(str string, need string) (substr string)
- func SubStrFromREx(str string, need string) (substr string)
- func SubStrRune(str string, start int, length ...int) (substr string)
- func ToLower(s string) string
- func ToUpper(s string) string
- func Trim(str string, characterMask ...string) string
- func TrimAll(str string, characterMask ...string) string
- func TrimLeft(str string, characterMask ...string) string
- func TrimLeftStr(str string, cut string, count ...int) string
- func TrimRight(str string, characterMask ...string) string
- func TrimRightStr(str string, cut string, count ...int) string
- func TrimStr(str string, cut string, count ...int) string
- func UcFirst(s string) string
- func UcWords(str string) string
- func WordWrap(str string, width int, br string) string
Examples ¶
- AddSlashes
- CaseCamel
- CaseCamelLower
- CaseDelimited
- CaseDelimitedScreaming
- CaseKebab
- CaseKebabScreaming
- CaseSnake
- CaseSnakeFirstUpper
- CaseSnakeScreaming
- Chr
- ChunkSplit
- Compare
- CompareVersion
- CompareVersionGo
- Contains
- ContainsAny
- ContainsI
- Count
- CountChars
- CountI
- CountWords
- Equal
- Explode
- Fields
- HasPrefix
- HasSuffix
- HideStr
- Implode
- InArray
- IsLetterLower
- IsLetterUpper
- IsNumeric
- IsSubDomain
- Join
- JoinAny
- LcFirst
- LenRune
- Levenshtein
- Nl2Br
- NumberFormat
- OctStr
- Ord
- Parse
- Pos
- PosI
- PosIRune
- PosR
- PosRI
- PosRIRune
- PosRRune
- PosRune
- PrefixArray
- QuoteMeta
- Repeat
- Replace
- ReplaceByArray
- ReplaceByMap
- ReplaceI
- ReplaceIByArray
- ReplaceIByMap
- Reverse
- SearchArray
- Shuffle
- SimilarText
- Soundex
- Split
- SplitAndTrim
- Str
- StrEx
- StrLimit
- StrLimitRune
- StrTill
- StrTillEx
- StripSlashes
- SubStr
- SubStrFrom
- SubStrFromEx
- SubStrFromR
- SubStrFromREx
- SubStrRune
- ToLower
- ToUpper
- Trim
- TrimAll
- TrimLeft
- TrimLeftStr
- TrimRight
- TrimRightStr
- TrimStr
- UcFirst
- UcWords
- WordWrap
Constants ¶
const (
// NotFoundIndex is the position index for string not found in searching functions.
NotFoundIndex = -1
)
Variables ¶
This section is empty.
Functions ¶
func AddSlashes ¶
AddSlashes quotes chars('"\) with slashes.
Example ¶
package main import ( "fmt" "github.com/gogf/gf/v2/text/gstr" ) func main() { var ( str = `'aa'"bb"cc\r\n\d\t` result = gstr.AddSlashes(str) ) fmt.Println(result) }
Output: \'aa\'\"bb\"cc\\r\\n\\d\\t
func CaseCamel ¶
CaseCamel converts a string to CamelCase.
Example ¶
case
package main import ( "fmt" "github.com/gogf/gf/v2/text/gstr" ) func main() { var ( str = `hello world` result = gstr.CaseCamel(str) ) fmt.Println(result) }
Output: HelloWorld
func CaseCamelLower ¶
CaseCamelLower converts a string to lowerCamelCase.
Example ¶
package main import ( "fmt" "github.com/gogf/gf/v2/text/gstr" ) func main() { var ( str = `hello world` result = gstr.CaseCamelLower(str) ) fmt.Println(result) }
Output: helloWorld
func CaseDelimited ¶
CaseDelimited converts a string to snake.case.delimited.
Example ¶
package main import ( "fmt" "github.com/gogf/gf/v2/text/gstr" ) func main() { var ( str = `hello world` del = byte('-') result = gstr.CaseDelimited(str, del) ) fmt.Println(result) }
Output: hello-world
func CaseDelimitedScreaming ¶
CaseDelimitedScreaming converts a string to DELIMITED.SCREAMING.CASE or delimited.screaming.case.
Example ¶
package main import ( "fmt" "github.com/gogf/gf/v2/text/gstr" ) func main() { { 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
func CaseKebab ¶
CaseKebab converts a string to kebab-case
Example ¶
package main import ( "fmt" "github.com/gogf/gf/v2/text/gstr" ) func main() { var ( str = `hello world` result = gstr.CaseKebab(str) ) fmt.Println(result) }
Output: hello-world
func CaseKebabScreaming ¶
CaseKebabScreaming converts a string to KEBAB-CASE-SCREAMING.
Example ¶
package main import ( "fmt" "github.com/gogf/gf/v2/text/gstr" ) func main() { var ( str = `hello world` result = gstr.CaseKebabScreaming(str) ) fmt.Println(result) }
Output: HELLO-WORLD
func CaseSnake ¶
CaseSnake converts a string to snake_case.
Example ¶
package main import ( "fmt" "github.com/gogf/gf/v2/text/gstr" ) func main() { var ( str = `hello world` result = gstr.CaseSnake(str) ) fmt.Println(result) }
Output: hello_world
func CaseSnakeFirstUpper ¶
CaseSnakeFirstUpper converts a string like "RGBCodeMd5" to "rgb_code_md5". TODO for efficiency should change regexp to traversing string in future.
Example ¶
package main import ( "fmt" "github.com/gogf/gf/v2/text/gstr" ) func main() { var ( str = `RGBCodeMd5` result = gstr.CaseSnakeFirstUpper(str) ) fmt.Println(result) }
Output: rgb_code_md5
func CaseSnakeScreaming ¶
CaseSnakeScreaming converts a string to SNAKE_CASE_SCREAMING.
Example ¶
package main import ( "fmt" "github.com/gogf/gf/v2/text/gstr" ) func main() { var ( str = `hello world` result = gstr.CaseSnakeScreaming(str) ) fmt.Println(result) }
Output: HELLO_WORLD
func Chr ¶
Chr return the ascii string of a number(0-255).
Example ¶
package main import ( "fmt" "github.com/gogf/gf/v2/text/gstr" ) func main() { var ( ascii = 65 // A result = gstr.Chr(ascii) ) fmt.Println(result) }
Output: A
func ChunkSplit ¶
ChunkSplit splits a string into smaller chunks. Can be used to split a string into smaller chunks which is useful for e.g. converting BASE64 string output to match RFC 2045 semantics. It inserts end every chunkLen characters. It considers parameter `body` and `end` as unicode string.
Example ¶
package main import ( "fmt" "github.com/gogf/gf/v2/text/gstr" ) func main() { var ( body = `1234567890` chunkLen = 2 end = "#" result = gstr.ChunkSplit(body, chunkLen, end) ) fmt.Println(result) }
Output: 12#34#56#78#90#
func Compare ¶
Compare returns an integer comparing two strings lexicographically. The result will be 0 if a==b, -1 if a < b, and +1 if a > b.
Example ¶
package main import ( "fmt" "github.com/gogf/gf/v2/text/gstr" ) func main() { fmt.Println(gstr.Compare("c", "c")) fmt.Println(gstr.Compare("a", "b")) fmt.Println(gstr.Compare("c", "b")) }
Output: 0 -1 1
func CompareVersion ¶
CompareVersion compares `a` and `b` as standard GNU version. It returns 1 if `a` > `b`. It returns -1 if `a` < `b`. It returns 0 if `a` = `b`. GNU standard version is like: v1.0 1 1.0.0 v1.0.1 v2.10.8 10.2.0 etc.
Example ¶
version
package main import ( "fmt" "github.com/gogf/gf/v2/text/gstr" ) func main() { 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
func CompareVersionGo ¶
CompareVersionGo compares `a` and `b` as standard Golang version. It returns 1 if `a` > `b`. It returns -1 if `a` < `b`. It returns 0 if `a` = `b`. Golang standard version is like: 1.0.0 v1.0.1 v2.10.8 10.2.0 v0.0.0-20190626092158-b2ccc519800e v4.20.0+incompatible etc.
Example ¶
package main import ( "fmt" "github.com/gogf/gf/v2/text/gstr" ) func main() { 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
func Contains ¶
Contains reports whether `substr` is within `str`, case-sensitively.
Example ¶
contain
package main import ( "fmt" "github.com/gogf/gf/v2/text/gstr" ) func main() { { 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
func ContainsAny ¶
ContainsAny reports whether any Unicode code points in `chars` are within `s`.
Example ¶
package main import ( "fmt" "github.com/gogf/gf/v2/text/gstr" ) func main() { { 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
func ContainsI ¶
ContainsI reports whether substr is within str, case-insensitively.
Example ¶
package main import ( "fmt" "github.com/gogf/gf/v2/text/gstr" ) func main() { 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
func Count ¶
Count counts the number of `substr` appears in `s`. It returns 0 if no `substr` found in `s`.
Example ¶
package main import ( "fmt" "github.com/gogf/gf/v2/text/gstr" ) func main() { 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
func CountChars ¶
CountChars returns information about chars' count used in a string. It considers parameter `str` as unicode string.
Example ¶
package main import ( "fmt" "github.com/gogf/gf/v2/text/gstr" ) func main() { 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] }
Output:
func CountI ¶
CountI counts the number of `substr` appears in `s`, case-insensitively. It returns 0 if no `substr` found in `s`.
Example ¶
package main import ( "fmt" "github.com/gogf/gf/v2/text/gstr" ) func main() { 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
func CountWords ¶
CountWords returns information about words' count used in a string. It considers parameter `str` as unicode string.
Example ¶
package main import ( "fmt" "github.com/gogf/gf/v2/text/gstr" ) func main() { 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}
func Equal ¶
Equal reports whether `a` and `b`, interpreted as UTF-8 strings, are equal under Unicode case-folding, case-insensitively.
Example ¶
package main import ( "fmt" "github.com/gogf/gf/v2/text/gstr" ) func main() { fmt.Println(gstr.Equal(`A`, `a`)) fmt.Println(gstr.Equal(`A`, `A`)) fmt.Println(gstr.Equal(`A`, `B`)) }
Output: true true false
func Explode ¶
Explode splits string `str` by a string `delimiter`, to an array. See http://php.net/manual/en/function.explode.php.
Example ¶
package main import ( "fmt" "github.com/gogf/gf/v2/text/gstr" ) func main() { var ( str = `Hello World` delimiter = " " result = gstr.Explode(delimiter, str) ) fmt.Printf(`%#v`, result) }
Output: []string{"Hello", "World"}
func Fields ¶
Fields returns the words used in a string as slice.
Example ¶
package main import ( "fmt" "github.com/gogf/gf/v2/text/gstr" ) func main() { var ( str = `Hello World` result = gstr.Fields(str) ) fmt.Printf(`%#v`, result) }
Output: []string{"Hello", "World"}
func HasPrefix ¶
HasPrefix tests whether the string s begins with prefix.
Example ¶
package main import ( "fmt" "github.com/gogf/gf/v2/text/gstr" ) func main() { var ( s = `Hello World` prefix = "Hello" result = gstr.HasPrefix(s, prefix) ) fmt.Println(result) }
Output: true
func HasSuffix ¶
HasSuffix tests whether the string s ends with suffix.
Example ¶
package main import ( "fmt" "github.com/gogf/gf/v2/text/gstr" ) func main() { var ( s = `my best love is goframe` prefix = "goframe" result = gstr.HasSuffix(s, prefix) ) fmt.Println(result) }
Output: true
func HideStr ¶
HideStr replaces part of the string `str` to `hide` by `percentage` from the `middle`. It considers parameter `str` as unicode string.
Example ¶
package main import ( "fmt" "github.com/gogf/gf/v2/text/gstr" ) func main() { var ( str = `13800138000` percent = 40 hide = `*` result = gstr.HideStr(str, percent, hide) ) fmt.Println(result) }
Output: 138****8000
func Implode ¶
Implode joins array elements `pieces` with a string `glue`. http://php.net/manual/en/function.implode.php
Example ¶
package main import ( "fmt" "github.com/gogf/gf/v2/text/gstr" ) func main() { 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
func InArray ¶
InArray checks whether string `s` in slice `a`.
Example ¶
package main import ( "fmt" "github.com/gogf/gf/v2/text/gstr" ) func main() { var ( a = []string{"goframe", "is", "very", "easy", "to", "use"} s = "goframe" result = gstr.InArray(a, s) ) fmt.Println(result) }
Output: true
func IsLetterLower ¶
IsLetterLower tests whether the given byte b is in lower case.
Example ¶
package main import ( "fmt" "github.com/gogf/gf/v2/text/gstr" ) func main() { fmt.Println(gstr.IsLetterLower('a')) fmt.Println(gstr.IsLetterLower('A')) }
Output: true false
func IsLetterUpper ¶
IsLetterUpper tests whether the given byte b is in upper case.
Example ¶
package main import ( "fmt" "github.com/gogf/gf/v2/text/gstr" ) func main() { fmt.Println(gstr.IsLetterUpper('A')) fmt.Println(gstr.IsLetterUpper('a')) }
Output: true false
func IsNumeric ¶
IsNumeric tests whether the given string s is numeric.
Example ¶
package main import ( "fmt" "github.com/gogf/gf/v2/text/gstr" ) func main() { fmt.Println(gstr.IsNumeric("88")) fmt.Println(gstr.IsNumeric("3.1415926")) fmt.Println(gstr.IsNumeric("abc")) }
Output: true true false
func IsSubDomain ¶
IsSubDomain checks whether `subDomain` is sub-domain of mainDomain. It supports '*' in `mainDomain`.
Example ¶
domain
package main import ( "fmt" "github.com/gogf/gf/v2/text/gstr" ) func main() { var ( subDomain = `s.goframe.org` mainDomain = `goframe.org` result = gstr.IsSubDomain(subDomain, mainDomain) ) fmt.Println(result) }
Output: true
func Join ¶
Join concatenates the elements of `array` to create a single string. The separator string `sep` is placed between elements in the resulting string.
Example ¶
package main import ( "fmt" "github.com/gogf/gf/v2/text/gstr" ) func main() { 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
func JoinAny ¶
JoinAny concatenates the elements of `array` to create a single string. The separator string `sep` is placed between elements in the resulting string.
The parameter `array` can be any type of slice, which be converted to string array.
Example ¶
package main import ( "fmt" "github.com/gogf/gf/v2/text/gstr" ) func main() { var ( sep = `,` arr2 = []int{99, 73, 85, 66} result = gstr.JoinAny(arr2, sep) ) fmt.Println(result) }
Output: 99,73,85,66
func LcFirst ¶
LcFirst returns a copy of the string s with the first letter mapped to its lower case.
Example ¶
package main import ( "fmt" "github.com/gogf/gf/v2/text/gstr" ) func main() { var ( str = `Goframe` result = gstr.LcFirst(str) ) fmt.Println(result) }
Output: goframe
func LenRune ¶
LenRune returns string length of unicode.
Example ¶
package main import ( "fmt" "github.com/gogf/gf/v2/text/gstr" ) func main() { var ( str = `GoFrame框架` result = gstr.LenRune(str) ) fmt.Println(result) }
Output: 9
func Levenshtein ¶
Levenshtein calculates Levenshtein distance between two strings. costIns: Defines the cost of insertion. costRep: Defines the cost of replacement. costDel: Defines the cost of deletion. See http://php.net/manual/en/function.levenshtein.php.
Example ¶
levenshtein
package main import ( "fmt" "github.com/gogf/gf/v2/text/gstr" ) func main() { 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
func Nl2Br ¶
Nl2Br inserts HTML line breaks(`br`|<br />) before all newlines in a string: \n\r, \r\n, \r, \n. It considers parameter `str` as unicode string.
Example ¶
package main import ( "fmt" "github.com/gogf/gf/v2/text/gstr" ) func main() { 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
func NumberFormat ¶
NumberFormat formats a number with grouped thousands. `decimals`: Sets the number of decimal points. `decPoint`: Sets the separator for the decimal point. `thousandsSep`: Sets the thousands' separator. See http://php.net/manual/en/function.number-format.php.
Example ¶
package main import ( "fmt" "github.com/gogf/gf/v2/text/gstr" ) func main() { var ( number float64 = 123456 decimals = 2 decPoint = "." thousandsSep = "," result = gstr.NumberFormat(number, decimals, decPoint, thousandsSep) ) fmt.Println(result) }
Output: 123,456.00
func OctStr ¶
OctStr converts string container octal string to its original string, for example, to Chinese string. Eg: `\346\200\241` -> 怡
Example ¶
convert
package main import ( "fmt" "github.com/gogf/gf/v2/text/gstr" ) func main() { var ( str = `\346\200\241` result = gstr.OctStr(str) ) fmt.Println(result) }
Output: 怡
func Ord ¶
Ord converts the first byte of a string to a value between 0 and 255.
Example ¶
'103' is the 'g' in ASCII
package main import ( "fmt" "github.com/gogf/gf/v2/text/gstr" ) func main() { var ( str = `goframe` result = gstr.Ord(str) ) fmt.Println(result) }
Output: 103
func Parse ¶
Parse parses the string into map[string]interface{}.
v1=m&v2=n -> map[v1:m v2:n] v[a]=m&v[b]=n -> map[v:map[a:m b:n]] v[a][a]=m&v[a][b]=n -> map[v:map[a:map[a:m b:n]]] v[]=m&v[]=n -> map[v:[m n]] v[a][]=m&v[a][]=n -> map[v:map[a:[m n]]] v[][]=m&v[][]=n -> map[v:[map[]]] // Currently does not support nested slice. v=m&v[a]=n -> error a .[[b=c -> map[a___[b:c]
Example ¶
parse
package main import ( "fmt" "github.com/gogf/gf/v2/text/gstr" ) func main() { { 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] }
Output:
func Pos ¶
Pos returns the position of the first occurrence of `needle` in `haystack` from `startOffset`, case-sensitively. It returns -1, if not found.
Example ¶
pos
package main import ( "fmt" "github.com/gogf/gf/v2/text/gstr" ) func main() { var ( haystack = `Hello World` needle = `World` result = gstr.Pos(haystack, needle) ) fmt.Println(result) }
Output: 6
func PosI ¶
PosI returns the position of the first occurrence of `needle` in `haystack` from `startOffset`, case-insensitively. It returns -1, if not found.
Example ¶
package main import ( "fmt" "github.com/gogf/gf/v2/text/gstr" ) func main() { 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
func PosIRune ¶
PosIRune acts like function PosI but considers `haystack` and `needle` as unicode string.
Example ¶
package main import ( "fmt" "github.com/gogf/gf/v2/text/gstr" ) func main() { { 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
func PosR ¶
PosR returns the position of the last occurrence of `needle` in `haystack` from `startOffset`, case-sensitively. It returns -1, if not found.
Example ¶
package main import ( "fmt" "github.com/gogf/gf/v2/text/gstr" ) func main() { 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
func PosRI ¶
PosRI returns the position of the last occurrence of `needle` in `haystack` from `startOffset`, case-insensitively. It returns -1, if not found.
Example ¶
package main import ( "fmt" "github.com/gogf/gf/v2/text/gstr" ) func main() { 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
func PosRIRune ¶
PosRIRune acts like function PosRI but considers `haystack` and `needle` as unicode string.
Example ¶
package main import ( "fmt" "github.com/gogf/gf/v2/text/gstr" ) func main() { 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
func PosRRune ¶
PosRRune acts like function PosR but considers `haystack` and `needle` as unicode string.
Example ¶
package main import ( "fmt" "github.com/gogf/gf/v2/text/gstr" ) func main() { 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
func PosRune ¶
PosRune acts like function Pos but considers `haystack` and `needle` as unicode string.
Example ¶
package main import ( "fmt" "github.com/gogf/gf/v2/text/gstr" ) func main() { 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
func PrefixArray ¶
PrefixArray adds `prefix` string for each item of `array`.
Example ¶
package main import ( "fmt" "github.com/gogf/gf/v2/text/gstr" ) func main() { var ( strArray = []string{"tom", "lily", "john"} ) gstr.PrefixArray(strArray, "classA_") fmt.Println(strArray) }
Output: [classA_tom classA_lily classA_john]
func QuoteMeta ¶
QuoteMeta returns a version of str with a backslash character (\) before every character that is among: .\+*?[^]($)
Example ¶
package main import ( "fmt" "github.com/gogf/gf/v2/text/gstr" ) func main() { { 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
func Repeat ¶
Repeat returns a new string consisting of multiplier copies of the string input.
Example ¶
package main import ( "fmt" "github.com/gogf/gf/v2/text/gstr" ) func main() { var ( input = `goframe ` multiplier = 3 result = gstr.Repeat(input, multiplier) ) fmt.Println(result) }
Output: goframe goframe goframe
func Replace ¶
Replace returns a copy of the string `origin` in which string `search` replaced by `replace` case-sensitively.
Example ¶
replace
package main import ( "fmt" "github.com/gogf/gf/v2/text/gstr" ) func main() { var ( origin = `golang is very nice!` search = `golang` replace = `goframe` result = gstr.Replace(origin, search, replace) ) fmt.Println(result) }
Output: goframe is very nice!
func ReplaceByArray ¶
ReplaceByArray returns a copy of `origin`, which is replaced by a slice in order, case-sensitively.
Example ¶
package main import ( "fmt" "github.com/gogf/gf/v2/text/gstr" ) func main() { { 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
func ReplaceByMap ¶
ReplaceByMap returns a copy of `origin`, which is replaced by a map in unordered way, case-sensitively.
Example ¶
package main import ( "fmt" "github.com/gogf/gf/v2/text/gstr" ) func main() { { 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
func ReplaceI ¶
ReplaceI returns a copy of the string `origin` in which string `search` replaced by `replace` case-insensitively.
Example ¶
package main import ( "fmt" "github.com/gogf/gf/v2/text/gstr" ) func main() { var ( origin = `golang is very nice!` search = `GOLANG` replace = `goframe` result = gstr.ReplaceI(origin, search, replace) ) fmt.Println(result) }
Output: goframe is very nice!
func ReplaceIByArray ¶
ReplaceIByArray returns a copy of `origin`, which is replaced by a slice in order, case-insensitively.
Example ¶
package main import ( "fmt" "github.com/gogf/gf/v2/text/gstr" ) func main() { 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
func ReplaceIByMap ¶
ReplaceIByMap returns a copy of `origin`, which is replaced by a map in unordered way, case-insensitively.
Example ¶
package main import ( "fmt" "github.com/gogf/gf/v2/text/gstr" ) func main() { 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
func Reverse ¶
Reverse returns a string which is the reverse of `str`.
Example ¶
package main import ( "fmt" "github.com/gogf/gf/v2/text/gstr" ) func main() { var ( str = `123456` result = gstr.Reverse(str) ) fmt.Println(result) }
Output: 654321
func SearchArray ¶
SearchArray searches string `s` in string slice `a` case-sensitively, returns its index in `a`. If `s` is not found in `a`, it returns -1.
Example ¶
array
package main import ( "fmt" "github.com/gogf/gf/v2/text/gstr" ) func main() { var ( array = []string{"goframe", "is", "very", "nice"} str = `goframe` result = gstr.SearchArray(array, str) ) fmt.Println(result) }
Output: 0
func Shuffle ¶
Shuffle randomly shuffles a string. It considers parameter `str` as unicode string.
Example ¶
package main import ( "fmt" "github.com/gogf/gf/v2/text/gstr" ) func main() { var ( str = `123456` result = gstr.Shuffle(str) ) fmt.Println(result) // May Output: // 563214 }
Output:
func SimilarText ¶
SimilarText calculates the similarity between two strings. See http://php.net/manual/en/function.similar-text.php.
Example ¶
similartext
package main import ( "fmt" "github.com/gogf/gf/v2/text/gstr" ) func main() { var ( first = `AaBbCcDd` second = `ad` percent = 0.80 result = gstr.SimilarText(first, second, &percent) ) fmt.Println(result) }
Output: 2
func Soundex ¶
Soundex calculates the soundex key of a string. See http://php.net/manual/en/function.soundex.php.
Example ¶
soundex
package main import ( "fmt" "github.com/gogf/gf/v2/text/gstr" ) func main() { var ( str1 = `Hello` str2 = `Hallo` result1 = gstr.Soundex(str1) result2 = gstr.Soundex(str2) ) fmt.Println(result1, result2) }
Output: H400 H400
func Split ¶
Split splits string `str` by a string `delimiter`, to an array.
Example ¶
package main import ( "fmt" "github.com/gogf/gf/v2/text/gstr" ) func main() { var ( str = `a|b|c|d` delimiter = `|` result = gstr.Split(str, delimiter) ) fmt.Printf(`%#v`, result) }
Output: []string{"a", "b", "c", "d"}
func SplitAndTrim ¶
SplitAndTrim splits string `str` by a string `delimiter` to an array, and calls Trim to every element of this array. It ignores the elements which are empty after Trim.
Example ¶
package main import ( "fmt" "github.com/gogf/gf/v2/text/gstr" ) func main() { var ( str = `a|b|||||c|d` delimiter = `|` result = gstr.SplitAndTrim(str, delimiter) ) fmt.Printf(`%#v`, result) }
Output: []string{"a", "b", "c", "d"}
func Str ¶
Str returns part of `haystack` string starting from and including the first occurrence of `needle` to the end of `haystack`. See http://php.net/manual/en/function.strstr.php.
Example ¶
str
package main import ( "fmt" "github.com/gogf/gf/v2/text/gstr" ) func main() { var ( haystack = `xxx.jpg` needle = `.` result = gstr.Str(haystack, needle) ) fmt.Println(result) }
Output: .jpg
func StrEx ¶
StrEx returns part of `haystack` string starting from and excluding the first occurrence of `needle` to the end of `haystack`.
Example ¶
package main import ( "fmt" "github.com/gogf/gf/v2/text/gstr" ) func main() { 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
func StrLimit ¶
StrLimit returns a portion of string `str` specified by `length` parameters, if the length of `str` is greater than `length`, then the `suffix` will be appended to the result string.
Example ¶
package main import ( "fmt" "github.com/gogf/gf/v2/text/gstr" ) func main() { var ( str = `123456789` length = 3 suffix = `...` result = gstr.StrLimit(str, length, suffix) ) fmt.Println(result) }
Output: 123...
func StrLimitRune ¶
StrLimitRune returns a portion of string `str` specified by `length` parameters, if the length of `str` is greater than `length`, then the `suffix` will be appended to the result string. StrLimitRune considers parameter `str` as unicode string.
Example ¶
package main import ( "fmt" "github.com/gogf/gf/v2/text/gstr" ) func main() { var ( str = `GoFrame是一款模块化、高性能、企业级的Go基础开发框架。` length = 17 suffix = "..." result = gstr.StrLimitRune(str, length, suffix) ) fmt.Println(result) }
Output: GoFrame是一款模块化、高性能...
func StrTill ¶
StrTill returns part of `haystack` string ending to and including the first occurrence of `needle` from the start of `haystack`.
Example ¶
package main import ( "fmt" "github.com/gogf/gf/v2/text/gstr" ) func main() { var ( haystack = `https://goframe.org/index.html?test=123456` needle = `?` result = gstr.StrTill(haystack, needle) ) fmt.Println(result) }
Output: https://goframe.org/index.html?
func StrTillEx ¶
StrTillEx returns part of `haystack` string ending to and excluding the first occurrence of `needle` from the start of `haystack`.
Example ¶
package main import ( "fmt" "github.com/gogf/gf/v2/text/gstr" ) func main() { var ( haystack = `https://goframe.org/index.html?test=123456` needle = `?` result = gstr.StrTillEx(haystack, needle) ) fmt.Println(result) }
Output: https://goframe.org/index.html
func StripSlashes ¶
StripSlashes un-quotes a quoted string by AddSlashes.
Example ¶
package main import ( "fmt" "github.com/gogf/gf/v2/text/gstr" ) func main() { var ( str = `C:\\windows\\GoFrame\\test` result = gstr.StripSlashes(str) ) fmt.Println(result) }
Output: C:\windows\GoFrame\test
func SubStr ¶
SubStr returns a portion of string `str` specified by the `start` and `length` parameters. The parameter `length` is optional, it uses the length of `str` in default.
Example ¶
substr
package main import ( "fmt" "github.com/gogf/gf/v2/text/gstr" ) func main() { var ( str = `1234567890` start = 0 length = 4 subStr = gstr.SubStr(str, start, length) ) fmt.Println(subStr) }
Output: 1234
func SubStrFrom ¶
SubStrFrom returns a portion of string `str` starting from first occurrence of and including `need` to the end of `str`.
Example ¶
package main import ( "fmt" "github.com/gogf/gf/v2/text/gstr" ) func main() { var ( str = "我爱GoFrameGood" need = `爱` ) fmt.Println(gstr.SubStrFrom(str, need)) }
Output: 爱GoFrameGood
func SubStrFromEx ¶
SubStrFromEx returns a portion of string `str` starting from first occurrence of and excluding `need` to the end of `str`.
Example ¶
package main import ( "fmt" "github.com/gogf/gf/v2/text/gstr" ) func main() { var ( str = "我爱GoFrameGood" need = `爱` ) fmt.Println(gstr.SubStrFromEx(str, need)) }
Output: GoFrameGood
func SubStrFromR ¶
SubStrFromR returns a portion of string `str` starting from last occurrence of and including `need` to the end of `str`.
Example ¶
package main import ( "fmt" "github.com/gogf/gf/v2/text/gstr" ) func main() { var ( str = "我爱GoFrameGood" need = `Go` ) fmt.Println(gstr.SubStrFromR(str, need)) }
Output: Good
func SubStrFromREx ¶
SubStrFromREx returns a portion of string `str` starting from last occurrence of and excluding `need` to the end of `str`.
Example ¶
package main import ( "fmt" "github.com/gogf/gf/v2/text/gstr" ) func main() { var ( str = "我爱GoFrameGood" need = `Go` ) fmt.Println(gstr.SubStrFromREx(str, need)) }
Output: od
func SubStrRune ¶
SubStrRune returns a portion of string `str` specified by the `start` and `length` parameters. SubStrRune considers parameter `str` as unicode string. The parameter `length` is optional, it uses the length of `str` in default.
Example ¶
package main import ( "fmt" "github.com/gogf/gf/v2/text/gstr" ) func main() { var ( str = `GoFrame是一款模块化、高性能、企业级的Go基础开发框架。` start = 14 length = 3 subStr = gstr.SubStrRune(str, start, length) ) fmt.Println(subStr) }
Output: 高性能
func ToLower ¶
ToLower returns a copy of the string s with all Unicode letters mapped to their lower case.
Example ¶
package main import ( "fmt" "github.com/gogf/gf/v2/text/gstr" ) func main() { var ( s = `GOFRAME` result = gstr.ToLower(s) ) fmt.Println(result) }
Output: goframe
func ToUpper ¶
ToUpper returns a copy of the string s with all Unicode letters mapped to their upper case.
Example ¶
package main import ( "fmt" "github.com/gogf/gf/v2/text/gstr" ) func main() { var ( s = `goframe` result = gstr.ToUpper(s) ) fmt.Println(result) }
Output: GOFRAME
func Trim ¶
Trim strips whitespace (or other characters) from the beginning and end of a string. The optional parameter `characterMask` specifies the additional stripped characters.
Example ¶
trim
package main import ( "fmt" "github.com/gogf/gf/v2/text/gstr" ) func main() { var ( str = `*Hello World*` characterMask = "*" result = gstr.Trim(str, characterMask) ) fmt.Println(result) }
Output: Hello World
func TrimAll ¶
TrimAll trims all characters in string `str`.
Example ¶
package main import ( "fmt" "github.com/gogf/gf/v2/text/gstr" ) func main() { var ( str = `*Hello World*` characterMask = "*" result = gstr.TrimAll(str, characterMask) ) fmt.Println(result) }
Output: HelloWorld
func TrimLeft ¶
TrimLeft strips whitespace (or other characters) from the beginning of a string.
Example ¶
package main import ( "fmt" "github.com/gogf/gf/v2/text/gstr" ) func main() { var ( str = `*Hello World*` characterMask = "*" result = gstr.TrimLeft(str, characterMask) ) fmt.Println(result) }
Output: Hello World*
func TrimLeftStr ¶
TrimLeftStr strips all the given `cut` string from the beginning of a string. Note that it does not strip the whitespaces of its beginning.
Example ¶
package main import ( "fmt" "github.com/gogf/gf/v2/text/gstr" ) func main() { var ( str = `**Hello World**` cut = "*" count = 1 result = gstr.TrimLeftStr(str, cut, count) ) fmt.Println(result) }
Output: *Hello World**
func TrimRight ¶
TrimRight strips whitespace (or other characters) from the end of a string.
Example ¶
package main import ( "fmt" "github.com/gogf/gf/v2/text/gstr" ) func main() { var ( str = `**Hello World**` characterMask = "*def" // []byte{"*", "d", "e", "f"} result = gstr.TrimRight(str, characterMask) ) fmt.Println(result) }
Output: **Hello Worl
func TrimRightStr ¶
TrimRightStr strips all the given `cut` string from the end of a string. Note that it does not strip the whitespaces of its end.
Example ¶
package main import ( "fmt" "github.com/gogf/gf/v2/text/gstr" ) func main() { var ( str = `Hello World!` cut = "!" count = -1 result = gstr.TrimRightStr(str, cut, count) ) fmt.Println(result) }
Output: Hello World
func TrimStr ¶
TrimStr strips all the given `cut` string from the beginning and end of a string. Note that it does not strip the whitespaces of its beginning or end.
Example ¶
package main import ( "fmt" "github.com/gogf/gf/v2/text/gstr" ) func main() { var ( str = `Hello World` cut = "World" count = -1 result = gstr.TrimStr(str, cut, count) ) fmt.Println(result) }
Output: Hello
func UcFirst ¶
UcFirst returns a copy of the string s with the first letter mapped to its upper case.
Example ¶
package main import ( "fmt" "github.com/gogf/gf/v2/text/gstr" ) func main() { var ( s = `hello` result = gstr.UcFirst(s) ) fmt.Println(result) }
Output: Hello
func UcWords ¶
UcWords uppercase the first character of each word in a string.
Example ¶
package main import ( "fmt" "github.com/gogf/gf/v2/text/gstr" ) func main() { var ( str = `hello world` result = gstr.UcWords(str) ) fmt.Println(result) }
Output: Hello World
func WordWrap ¶
WordWrap wraps a string to a given number of characters. TODO: Enable cut parameter, see http://php.net/manual/en/function.wordwrap.php.
Example ¶
package main import ( "fmt" "github.com/gogf/gf/v2/text/gstr" ) func main() { { 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.
Types ¶
This section is empty.
Source Files ¶
- gstr.go
- gstr_array.go
- gstr_case.go
- gstr_compare.go
- gstr_contain.go
- gstr_convert.go
- gstr_count.go
- gstr_create.go
- gstr_domain.go
- gstr_is.go
- gstr_length.go
- gstr_parse.go
- gstr_pos.go
- gstr_replace.go
- gstr_similar.go
- gstr_slashes.go
- gstr_split_join.go
- gstr_sub.go
- gstr_trim.go
- gstr_upper_lower.go
- gstr_version.go