diff --git a/text/gstr/gstr_z_all_example_test.go b/text/gstr/gstr_z_all_example_test.go new file mode 100644 index 000000000..79fe3023d --- /dev/null +++ b/text/gstr/gstr_z_all_example_test.go @@ -0,0 +1,2127 @@ +package gstr_test + +import ( + "fmt" + + "github.com/gogf/gf/v2/text/gstr" +) + +func ExampleAddSlashes() { + var ( + str = `'aa'"bb"cc\r\n\d\t` + rsStr = gstr.AddSlashes(str) + ) + + fmt.Println(rsStr) + + // Output: + // \'aa\'\"bb\"cc\\r\\n\\d\\t +} + +func ExampleCaseCamel() { + var ( + str = `goframe_is very nice.to-use` + rsStr = gstr.CaseCamel(str) + ) + fmt.Println(rsStr) + + // Output: + // GoframeIsVeryNiceToUse +} + +func ExampleCaseCamelLower() { + var ( + str = `goframe_is very nice.to-use` + rsStr = gstr.CaseCamelLower(str) + ) + + fmt.Println(rsStr) + + // Output: + // goframeIsVeryNiceToUse +} + +func ExampleCaseDelimited() { + var ( + str = `goframe_is_very-nice.to-use` + del = uint8(35) + rsStr = gstr.CaseDelimited(str, del) + ) + fmt.Println(rsStr) + + // Output: + // goframe#is#very#nice#to#use +} + +func ExampleCaseDelimitedScreaming() { + { + var ( + str = `goframe_is Very Nice.to-use` + del = uint8(35) + rsStr = gstr.CaseDelimitedScreaming(str, del, true) + ) + fmt.Println(rsStr) + } + + { + var ( + str = `GOFRAME_IS VERY NICE.TO-USE` + del = uint8(35) + rsStr = gstr.CaseDelimitedScreaming(str, del, false) + ) + fmt.Println(rsStr) + } + + // Output: + // GOFRAME#IS#VERY#NICE#TO#USE + // goframe#is#very#nice#to#use +} + +func ExampleCaseKebab() { + var ( + str = `goframe_is Very Nice.to-use` + rsStr = gstr.CaseKebab(str) + ) + fmt.Println(rsStr) + + // Output: + // goframe-is-very-nice-to-use +} + +func ExampleCaseKebabScreaming() { + var ( + str = `goframe_is Very Nice.to-use` + rsStr = gstr.CaseKebabScreaming(str) + ) + fmt.Println(rsStr) + + // Output: + // GOFRAME-IS-VERY-NICE-TO-USE +} + +func ExampleCaseSnake() { + var ( + str = `goframe_is Very Nice.to-use` + rsStr = gstr.CaseSnake(str) + ) + + fmt.Println(rsStr) + + // Output: + // goframe_is_very_nice_to_use +} + +func ExampleCaseSnakeFirstUpper() { + var ( + str = `GoframeIsVeryNiceToUse` + rsStr = gstr.CaseSnakeFirstUpper(str) + ) + + fmt.Println(rsStr) + + // Output: + // goframe_is_very_nice_to_use +} + +func ExampleCaseSnakeScreaming() { + var ( + str = `goframe_is Very Nice.to-use` + rsStr = gstr.CaseSnakeScreaming(str) + ) + + fmt.Println(rsStr) + + // Output: + // GOFRAME_IS_VERY_NICE_TO_USE +} + +func ExampleChr() { + var ( + ascii = 65 + rsStr = gstr.Chr(ascii) + ) + fmt.Println(rsStr) + + // Output: + // A +} + +func ExampleChunkSplit() { + { + var ( + body = `1234` + chunkLen = 2 + end = "#" + rsStr = gstr.ChunkSplit(body, chunkLen, end) + ) + + fmt.Println(rsStr) + } + + { + var ( + body = `我爱Goframe` + chunkLen = 1 + end = "-" + rsStr = gstr.ChunkSplit(body, chunkLen, end) + ) + fmt.Println(rsStr) + } + + { + var ( + body = `1234` + chunkLen = 1 + end = "" + rsStr = gstr.ChunkSplit(body, chunkLen, end) + ) + fmt.Println(rsStr) + } + + // May Output: + // 12#34# + // 我-爱-G-o-f-r-a-m-e- + // "1\r\n2\r\n3\r\n4\r\n" +} + +func ExampleCompare() { + { + var ( + a = "C" + b = "C" + rsStr = gstr.Compare(a, b) + ) + + fmt.Println(rsStr) + } + + { + var ( + a = "A" + b = "B" + rsStr = gstr.Compare(a, b) + ) + fmt.Println(rsStr) + } + + { + var ( + a = "C" + b = "B" + rsStr = gstr.Compare(a, b) + ) + fmt.Println(rsStr) + } + + // Output: + // 0 + // -1 + // 1 +} + +func ExampleCompareVersion() { + { + var ( + a = "v2.11.9" + b = "v2.10.8" + + rsStr = gstr.CompareVersion(a, b) + ) + + fmt.Println(rsStr) + } + + { + var ( + a = "A.10.8" + b = "A.19.7" + rsStr = gstr.CompareVersion(a, b) + ) + fmt.Println(rsStr) + } + + { + var ( + a = "2.8.beta" + b = "2.8" + rsStr = gstr.CompareVersion(a, b) + ) + fmt.Println(rsStr) + } + + // Output: + // 1 + // -1 + // 0 +} + +func ExampleCompareVersionGo() { + + { + var ( + a = "v2.11.9" + b = "v2.10.8" + rsStr = gstr.CompareVersionGo(a, b) + ) + fmt.Println(rsStr) + } + + { + var ( + a = "v0.0.2-20180626092158-b2ccc119800e" + b = "v1.0.1-20190626092158-b2ccc519800e" + rsStr = gstr.CompareVersionGo(a, b) + ) + fmt.Println(rsStr) + } + + { + var ( + a = "v4.20.1" + b = "v4.20.1+incompatible" + rsStr = gstr.CompareVersionGo(a, b) + ) + fmt.Println(rsStr) + } + + // Output: + // 1 + // -1 + // 0 +} + +func ExampleContains() { + { + var ( + str = `goframe_is Very Nice.to-use` + substr = `goframe` + rsStr = gstr.Contains(str, substr) + ) + + fmt.Println(rsStr) + } + + { + var ( + str = `goframe_is Very Nice.to-use` + substr = `Goframe` + rsStr = gstr.Contains(str, substr) + ) + fmt.Println(rsStr) + } + + // Output: + // true + // false +} + +func ExampleContainsAny() { + { + var ( + s = `goframe_is Very Nice.to-use` + chars = "g" + rsStr = gstr.ContainsAny(s, chars) + ) + + fmt.Println(rsStr) + } + + { + var ( + s = `goframe_is Very Nice.to-use` + chars = "G" + rsStr = gstr.ContainsAny(s, chars) + ) + fmt.Println(rsStr) + } + + { + var ( + s = `goframe_is Very Nice.to-use` + chars = "Nice" + rsStr = gstr.ContainsAny(s, chars) + ) + fmt.Println(rsStr) + } + + // Output: + // true + // false + // true +} + +func ExampleContainsI() { + { + var ( + str = `goframe_is Very Nice.to-use` + substr = "go" + rsStr = gstr.ContainsI(str, substr) + ) + + fmt.Println(rsStr) + } + + { + var ( + str = `goframe_is Very Nice.to-use` + substr = "Go" + rsStr = gstr.ContainsI(str, substr) + ) + fmt.Println(rsStr) + } + + { + var ( + str = `goframe_is Very Nice.to-use` + substr = "Golang" + rsStr = gstr.ContainsI(str, substr) + ) + fmt.Println(rsStr) + } + + // Output: + // true + // true + // false +} + +func ExampleCount() { + { + var ( + str = `goframe_is Very Nice.to-use` + substr = "goframe" + rsStr = gstr.Count(str, substr) + ) + fmt.Println(rsStr) + } + + { + var ( + str = `goframe_is Very Nice.to-use` + substr = "golang" + rsStr = gstr.Count(str, substr) + ) + fmt.Println(rsStr) + } + + // Output: + // 1 + // 0 +} + +func ExampleCountChars() { + { + var ( + str = `goframe_is Very Nice.to-use` + rsStr = gstr.CountChars(str) + ) + fmt.Println(rsStr) + } + + { + var ( + str = `goframe_is Very Nice.to-use` + rsStr = gstr.CountChars(str, true) + ) + fmt.Println(rsStr) + } + + // May Output: + // map[ :2 -:1 .:1 N:1 V:1 _:1 a:1 c:1 e:4 f:1 g:1 i:2 m:1 o:2 r:2 s:2 t:1 u:1 y:1] + // map[-:1 .:1 N:1 V:1 _:1 a:1 c:1 e:4 f:1 g:1 i:2 m:1 o:2 r:2 s:2 t:1 u:1 y:1] + +} + +func ExampleCountI() { + { + var ( + s = `goframe_is Very Nice.to-use` + substr = "goframe" + rsStr = gstr.CountI(s, substr) + ) + + fmt.Println(rsStr) + } + + { + var ( + s = `goframe_is Very Nice.to-use` + substr = "Goframe" + rsStr = gstr.CountI(s, substr) + ) + + fmt.Println(rsStr) + } + + { + var ( + s = `Goframe_is Very Nice.to-use` + substr = "golang" + rsStr = gstr.CountI(s, substr) + ) + fmt.Println(rsStr) + } + + // Output: + // 1 + // 1 + // 0 +} + +func ExampleCountWords() { + var ( + str = `goframe is Very Nice to use ! goframe Very Nice !` + rsStr = gstr.CountWords(str) + ) + + fmt.Println(rsStr) + + // Output: + // map[!:2 Nice:2 Very:2 goframe:2 is:1 to:1 use:1] +} + +func ExampleEqual() { + { + var ( + a = `A` + b = `a` + rsStr = gstr.Equal(a, b) + ) + + fmt.Println(rsStr) + } + + { + var ( + a = `A` + b = `A` + rsStr = gstr.Equal(a, b) + ) + fmt.Println(rsStr) + } + + { + var ( + a = `C` + b = `B` + rsStr = gstr.Equal(a, b) + ) + fmt.Println(rsStr) + } + + // Output: + // true + // true + // false +} + +func ExampleExplode() { + var ( + str = `goframe_is_Very_Nice_to_use` + delimiter = "_" + rsStr = gstr.Explode(delimiter, str) + ) + + fmt.Printf(`%#v`, rsStr) + + // Output: + // []string{"goframe", "is", "Very", "Nice", "to", "use"} +} + +func ExampleFields() { + var ( + str = `goframe is Very Nice to-use` + rsStr = gstr.Fields(str) + ) + + fmt.Printf(`%#v`, rsStr) + + // Output: + // []string{"goframe", "is", "Very", "Nice", "to-use"} +} + +func ExampleHasPrefix() { + { + var ( + s = `goframe_is Very Nice.to-use` + prefix = "goframe" + rsStr = gstr.HasPrefix(s, prefix) + ) + + fmt.Println(rsStr) + } + + { + var ( + s = `goframe_is Very Nice.to-use` + prefix = "Goframe" + rsStr = gstr.HasPrefix(s, prefix) + ) + fmt.Println(rsStr) + } + + // Output: + // true + // false +} + +func ExampleHasSuffix() { + { + var ( + s = `goframe_is Very Nice.to-use` + prefix = "use" + rsStr = gstr.HasSuffix(s, prefix) + ) + fmt.Println(rsStr) + } + + { + var ( + s = `goframe_is Very Nice.to-use` + prefix = "Use" + rsStr = gstr.HasSuffix(s, prefix) + ) + fmt.Println(rsStr) + } + + // Output: + // true + // false +} + +func ExampleHideStr() { + { + var ( + str = `13800138000` + percent = 40 + hide = `*` + rsStr = gstr.HideStr(str, percent, hide) + ) + fmt.Println(rsStr) + } + + { + var ( + str = `AAAAAAAAAA` + percent = 60 + hide = `@` + rsStr = gstr.HideStr(str, percent, hide) + ) + fmt.Println(rsStr) + } + + // Output: + // 138****8000 + // AA@@@@@@AA +} + +func ExampleImplode() { + var ( + pieces = []string{"goframe", "is", "Very", "Nice", "to", "use"} + glue = "-" + rsStr = gstr.Implode(glue, pieces) + ) + fmt.Println(rsStr) + + // Output: + // goframe-is-Very-Nice-to-use +} + +func ExampleInArray() { + { + var ( + a = []string{"goframe", "is", "Very", "Nice", "to", "use"} + s = "goframe" + rsStr = gstr.InArray(a, s) + ) + fmt.Println(rsStr) + } + + { + var ( + a = []string{"goframe", "is", "Very", "Nice", "to", "use"} + s = "golang" + rsStr = gstr.InArray(a, s) + ) + fmt.Println(rsStr) + } + + // Output: + // true + // false +} + +func ExampleIsLetterLower() { + { + var ( + b byte = 65 // In ASCII is "a" + rsStr = gstr.IsLetterLower(b) + ) + fmt.Println(rsStr) + } + + { + var ( + b byte = 97 // In ASCII is "A" + rsStr = gstr.IsLetterLower(b) + ) + fmt.Println(rsStr) + } + + // Output: + // false + // true +} + +func ExampleIsLetterUpper() { + { + var ( + b byte = 65 // In ASCII is "a" + rsStr = gstr.IsLetterUpper(b) + ) + fmt.Println(rsStr) + } + + { + var ( + b byte = 97 // In ASCII is "A" + rsStr = gstr.IsLetterUpper(b) + ) + fmt.Println(rsStr) + } + + // Output: + // true + // false +} + +func ExampleIsNumeric() { + { + var ( + s = "88" + rsStr = gstr.IsNumeric(s) + ) + fmt.Println(rsStr) + } + + { + var ( + s = "aa66bb88" + rsStr = gstr.IsNumeric(s) + ) + fmt.Println(rsStr) + } + + { + var ( + s = "3.1415926" + rsStr = gstr.IsNumeric(s) + ) + fmt.Println(rsStr) + } + + // Output: + // true + // false + // true +} + +func ExampleIsSubDomain() { + { + var ( + subDomain = `s.goframe.org` + mainDomain = `goframe.org` + rsStr = gstr.IsSubDomain(subDomain, mainDomain) + ) + fmt.Println(rsStr) + } + + { + var ( + subDomain = `s.s.goframe.org` + mainDomain = `goframe.org` + rsStr = gstr.IsSubDomain(subDomain, mainDomain) + ) + fmt.Println(rsStr) + } + + { + var ( + subDomain = `s.s.goframe.org` + mainDomain = `*goframe.org` + rsStr = gstr.IsSubDomain(subDomain, mainDomain) + ) + fmt.Println(rsStr) + } + + // Output: + // true + // true + // false +} + +func ExampleJoin() { + var ( + array = []string{"goframe", "is", "Very", "Nice", "to", "use"} + sep = `,` + rsStr = gstr.Join(array, sep) + ) + fmt.Println(rsStr) + + // Output: + // goframe,is,Very,Nice,to,use +} + +func ExampleJoinAny() { + { + var ( + sep = `@` + arr1 = []string{"goframe", "is", "Very", "Nice", "to", "use"} + rsStr = gstr.JoinAny(arr1, sep) + ) + fmt.Println(rsStr) + } + + { + var ( + sep = `,` + arr2 = []int{99, 73, 85, 66} + rsStr2 = gstr.JoinAny(arr2, sep) + ) + fmt.Println(rsStr2) + } + + { + var ( + sep = `,` + arr3 = []interface{}{ + "Mary", + 18, + 99.5, + "
", + "Jack", + 19, + 66.5, + } + rsStr3 = gstr.JoinAny(arr3, sep) + ) + fmt.Println(rsStr3) + } + + { + type StructA struct { + Name string + Age int + } + var ( + sep = `|` + + arr4 = []StructA{ + {"Mary", 18}, + {"Jack", 18}, + {"Lucy", 18}, + } + rsStr = gstr.JoinAny(arr4, sep) + ) + fmt.Println(rsStr) + } + + // Output: + // goframe@is@Very@Nice@to@use + // 99,73,85,66 + // Mary,18,99.5,
,Jack,19,66.5 + // {"Name":"Mary","Age":18}|{"Name":"Jack","Age":18}|{"Name":"Lucy","Age":18} +} + +func ExampleLcFirst() { + { + var ( + str = `Goframe` + rsStr = gstr.LcFirst(str) + ) + fmt.Println(rsStr) + } + + { + var ( + str = `Goframe is Very Nice to use.` + rsStr = gstr.LcFirst(str) + ) + fmt.Println(rsStr) + } + + // Output: + // goframe + // goframe is Very Nice to use. +} + +func ExampleLenRune() { + { + var ( + str = `goframe is Very Nice to use` + rsStr = gstr.LenRune(str) + ) + fmt.Println(rsStr) + } + + { + var ( + str = `123 4567 890` + rsStr = gstr.LenRune(str) + ) + fmt.Println(rsStr) + } + + { + var ( + str = `Goframe是一个非常好用的Go语言框架!` + rsStr = gstr.LenRune(str) + ) + fmt.Println(rsStr) + } + + // Output: + // 27 + // 12 + // 22 +} + +func ExampleLevenshtein() { + { + var ( + str1 = "Hello World" + str2 = "ello World" + costIns = 1 + costRep = 1 + costDel = 1 + rsStr = gstr.Levenshtein(str1, str2, costIns, costRep, costDel) + ) + + fmt.Println(rsStr) + } + + { + var ( + str1 = "Hello World" + str2 = "ello Worles" + costIns = 10 + costRep = 20 + costDel = 30 + rsStr = gstr.Levenshtein(str1, str2, costIns, costRep, costDel) + ) + fmt.Println(rsStr) + } + + // Output: + // 1 + // 60 +} + +func ExampleNl2Br() { + var ( + str = `goframe +is +Very +Nice +to +use` + rsStr = gstr.Nl2Br(str) + ) + + fmt.Println(rsStr) + + // Output: + // goframe
is
Very
Nice
to
use +} + +func ExampleNumberFormat() { + + { + var ( + number float64 = 123456 + decimals = 2 + decPoint = "." + thousandsSep = "," + rsStr = gstr.NumberFormat(number, decimals, decPoint, thousandsSep) + ) + fmt.Println(rsStr) + } + + { + var ( + number = 1234.56 + decimals = 1 + decPoint = "," + thousandsSep = " " + rsStr = gstr.NumberFormat(number, decimals, decPoint, thousandsSep) + ) + fmt.Println(rsStr) + } + + { + var ( + number = 1234.5678 + decimals = 3 + decPoint = "." + thousandsSep = "," + rsStr = gstr.NumberFormat(number, decimals, decPoint, thousandsSep) + ) + fmt.Println(rsStr) + } + + // Output: + // 123,456.00 + // 1 234,6 + // 1,234.568 +} + +func ExampleOctStr() { + var ( + str = `\346\200\241` + rsStr = gstr.OctStr(str) + ) + fmt.Println(rsStr) + + // Output: + // 怡 +} + +// '103' is the 'g' in ASCII +func ExampleOrd() { + var ( + str = `goframe` + rsStr = gstr.Ord(str) + ) + + fmt.Println(rsStr) + + // Output: + // 103 + +} + +func ExampleParse() { + { + var ( + str = `v1=m&v2=n` + rsStr, _ = gstr.Parse(str) + ) + fmt.Println(rsStr) + } + + { + var ( + str = `v[a][a]=m&v[a][b]=n` + rsStr, _ = gstr.Parse(str) + ) + fmt.Println(rsStr) + } + + { + // The form of nested Slice is not yet supported. + var str = `v[][]=m&v[][]=n` + rsStr, err := gstr.Parse(str) + if err != nil { + panic(err) + } + fmt.Println(rsStr) + } + + { + // This will produce an error. + var str = `v=m&v[a]=n` + rsStr, err := gstr.Parse(str) + if err != nil { + println(err) + } + fmt.Println(rsStr) + } + + { + var ( + str = `a .[[b=c` + rsStr, _ = gstr.Parse(str) + ) + fmt.Println(rsStr) + } + + // 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] +} + +func ExamplePos() { + { + var ( + haystack = `goframe_is Very Nice.to-use` + needle = `Nice` + rsStr = gstr.Pos(haystack, needle) + ) + fmt.Println(rsStr) + } + + { + var ( + haystack = `goframe_is Very Nice.to-use` + needle = `Nice` + startOffset = 16 + rsStr = gstr.Pos(haystack, needle, startOffset) + ) + fmt.Println(rsStr) + } + + { + var ( + haystack = `goframe_is Very Nice.to-use` + needle = `Nice` + startOffset = 17 + rsStr = gstr.Pos(haystack, needle, startOffset) + ) + fmt.Println(rsStr) + } + + { + var ( + haystack = `goframe_is Very Nice.to-use` + needle = `nice` + rsStr = gstr.Pos(haystack, needle) + ) + fmt.Println(rsStr) + } + + // Output: + // 16 + // 16 + // -1 + // -1 +} + +func ExamplePosI() { + { + var ( + haystack = `goframe_is Very Nice.to-use` + needle = `Nice` + rsStr = gstr.PosI(haystack, needle) + ) + + fmt.Println(rsStr) + } + + { + var ( + haystack = `goframe_is Very Nice.to-use` + needle = `Nice` + startOffset = 16 + rsStr = gstr.PosI(haystack, needle, startOffset) + ) + fmt.Println(rsStr) + } + + { + var ( + haystack = `goframe_is Very Nice.to-use` + needle = `Nice` + startOffset = 17 + rsStr = gstr.PosI(haystack, needle, startOffset) + ) + fmt.Println(rsStr) + } + + { + var ( + haystack = `goframe_is Very Nice.to-use` + needle = `nice` + rsStr = gstr.PosI(haystack, needle) + ) + fmt.Println(rsStr) + } + + // Output: + // 16 + // 16 + // -1 + // 16 +} + +func ExamplePosIRune() { + { + var ( + haystack = `goframe_is Very Nice.to-use` + needle = `Nice` + rsStr = gstr.PosIRune(haystack, needle) + ) + + fmt.Println(rsStr) + } + + { + var ( + haystack = `Goframe是个非常好用的框架.` + needle = `Nice` + startOffset = 16 + rsStr = gstr.PosIRune(haystack, needle, startOffset) + ) + fmt.Println(rsStr) + } + + { + var ( + haystack = `Goframe是个非常好用的框架.` + needle = `Nice` + startOffset = 17 + rsStr = gstr.PosIRune(haystack, needle, startOffset) + ) + fmt.Println(rsStr) + } + + { + var ( + haystack = `Goframe是个非常好用的框架.` + needle = `nice` + rsStr = gstr.PosIRune(haystack, needle) + ) + fmt.Println(rsStr) + } + + // Output: + // 16 + // -1 + // -1 + // -1 +} + +func ExamplePosR() { + { + var ( + haystack = `goframe_is Very Nice.to-use` + needle = `Nice` + rsStr = gstr.PosR(haystack, needle) + ) + fmt.Println(rsStr) + } + + { + var ( + haystack = `goframe_is Very Nice.to-use` + needle = `Nice` + startOffset = 16 + rsStr = gstr.PosR(haystack, needle, startOffset) + ) + fmt.Println(rsStr) + } + + { + var ( + haystack = `goframe_is Very Nice.to-use` + needle = `Nice` + startOffset = 17 + rsStr = gstr.PosR(haystack, needle, startOffset) + ) + fmt.Println(rsStr) + } + + { + var ( + haystack = `goframe_is Very Nice.to-use` + needle = `nice` + rsStr = gstr.PosR(haystack, needle) + ) + fmt.Println(rsStr) + } + + // Output: + // 16 + // 16 + // -1 + // -1 +} + +func ExamplePosRI() { + { + var ( + haystack = `goframe_is Very Nice.to-use` + needle = `Nice` + rsStr = gstr.PosRI(haystack, needle) + ) + fmt.Println(rsStr) + } + + { + var ( + haystack = `goframe_is Very Nice.to-use` + needle = `Nice` + startOffset = 16 + rsStr = gstr.PosRI(haystack, needle, startOffset) + ) + fmt.Println(rsStr) + } + + { + var ( + haystack = `goframe_is Very Nice.to-use` + needle = `Nice` + startOffset = 17 + rsStr = gstr.PosRI(haystack, needle, startOffset) + ) + fmt.Println(rsStr) + } + + { + var ( + haystack = `goframe_is Very Nice.to-use` + needle = `nice` + rsStr = gstr.PosRI(haystack, needle) + ) + fmt.Println(rsStr) + } + + // Output: + // 16 + // 16 + // -1 + // 16 + +} + +func ExamplePosRIRune() { + { + var ( + haystack = `Goframe是个非常好用的框架` + needle = `好用` + rsStr = gstr.PosRIRune(haystack, needle) + ) + + fmt.Println(rsStr) + } + + { + var ( + haystack = `Goframe是个非常好用的框架` + needle = `框架` + startOffset = 16 + rsStr = gstr.PosRIRune(haystack, needle, startOffset) + ) + fmt.Println(rsStr) + } + + { + var ( + haystack = `Goframe是个非常好用的框架` + needle = `golang` + startOffset = 17 + rsStr = gstr.PosRIRune(haystack, needle, startOffset) + ) + fmt.Println(rsStr) + } + + { + var ( + haystack = `Goframe是个非常好用的框架` + needle = `goframe` + rsStr = gstr.PosRIRune(haystack, needle) + ) + fmt.Println(rsStr) + } + + // Output: + // 11 + // 14 + // -1 + // 0 +} + +func ExamplePosRRune() { + { + var ( + haystack = `goframe_is Very Nice.to-use` + needle = `Nice` + rsStr = gstr.PosRRune(haystack, needle) + ) + fmt.Println(rsStr) + } + + { + var ( + haystack = `goframe_is Very Nice.to-use` + needle = `Nice` + startOffset = 16 + rsStr = gstr.PosRRune(haystack, needle, startOffset) + ) + fmt.Println(rsStr) + } + + { + var ( + haystack = `Goframe是中国开发者的福利.` + needle = `Nice` + startOffset = 17 + rsStr = gstr.PosRRune(haystack, needle, startOffset) + ) + fmt.Println(rsStr) + } + + { + var ( + haystack = `Goframe是中国开发者的福利.` + needle = `开发者` + rsStr = gstr.PosRRune(haystack, needle) + ) + fmt.Println(rsStr) + } + + // Output: + // 16 + // 16 + // -1 + // 10 +} + +func ExamplePosRune() { + { + var ( + haystack = `goframe_is Very Nice.to-use` + needle = `Nice` + rsStr = gstr.PosRune(haystack, needle) + ) + fmt.Println(rsStr) + } + + { + var ( + haystack = `我喜欢Goframe框架` + needle = `框架` + startOffset = 16 + rsStr = gstr.PosRune(haystack, needle, startOffset) + ) + fmt.Println(rsStr) + } + + { + var ( + haystack = `我喜欢Goframe框架` + needle = `框架` + startOffset = 17 + rsStr = gstr.PosRune(haystack, needle, startOffset) + ) + fmt.Println(rsStr) + } + + { + var ( + haystack = `我喜欢Goframe框架` + needle = `goframe` + rsStr = gstr.PosRune(haystack, needle) + ) + fmt.Println(rsStr) + } + + // Output: + // 16 + // 10 + // -1 + // -1 +} + +func ExampleQuoteMeta() { + { + var ( + str = `.\+?[^]()` + rsStr = gstr.QuoteMeta(str) + ) + fmt.Println(rsStr) + } + + { + var ( + str = `https://goframe.org/pages/viewpage.action?pageId=1114327` + rsStr = gstr.QuoteMeta(str) + ) + fmt.Println(rsStr) + } + + // Output: + // \.\\\+\?\[\^\]\(\) + // https://goframe\.org/pages/viewpage\.action\?pageId=1114327 + +} + +func ExampleRepeat() { + var ( + input = `goframe ` + multiplier = 3 + rsStr = gstr.Repeat(input, multiplier) + ) + fmt.Println(rsStr) + + // Output: + // goframe goframe goframe +} + +func ExampleReplace() { + { + var ( + origin = `goframe_is_Very_Nice_to_use!` + search = `_` + replace = `+` + rsStr = gstr.Replace(origin, search, replace) + ) + fmt.Println(rsStr) + } + + { + var ( + origin = `goframe_is_Very_Nice_to_use!` + search = `_` + replace = `+` + count = 2 + rsStr = gstr.Replace(origin, search, replace, count) + ) + fmt.Println(rsStr) + } + + // Output: + // goframe+is+Very+Nice+to+use! + // goframe+is+Very_Nice_to_use! +} + +func ExampleReplaceByArray() { + { + var ( + origin = `Golang is Very Good` + array = []string{"o", "O"} + rsStr = gstr.ReplaceByArray(origin, array) + ) + fmt.Println(rsStr) + } + + { + var ( + origin = `Golang is Very Good` + array = []string{"Golang", "Goframe", "Good", "Nice"} + rsStr = gstr.ReplaceByArray(origin, array) + ) + fmt.Println(rsStr) + } + + // Output: + // GOlang is Very GOOd + // Goframe is Very Nice +} + +func ExampleReplaceByMap() { + { + var ( + origin = `Golang is Very Good` + replaces = map[string]string{ + "Golang": "Goframe", + "Good": "Nice", + } + rsStr = gstr.ReplaceByMap(origin, replaces) + ) + fmt.Println(rsStr) + } + + { + var ( + origin = `Golang is Very Good` + replaces = map[string]string{ + "golang": "Goframe", + "good": "Nice", + } + rsStr = gstr.ReplaceByMap(origin, replaces) + ) + fmt.Println(rsStr) + } + + // Output: + // Goframe is Very Nice + // Golang is Very Good +} + +func ExampleReplaceI() { + var ( + origin = `goframe is Very Nice to use` + search = `Goframe` + replace = `golang` + count = 3 + rsStr = gstr.ReplaceI(origin, search, replace, count) + ) + fmt.Println(rsStr) + + // Output: + // golang is Very Nice to use +} + +func ExampleReplaceIByArray() { + var ( + origin = `golang is very nice` + array = []string{"Golang", "GoFrame", "Nice", "GOOD"} + rsStr = gstr.ReplaceIByArray(origin, array) + ) + + fmt.Println(rsStr) + + // Output: + // GoFrame is very GOOD +} + +func ExampleReplaceIByMap() { + { + var ( + origin = `Golang is Very Good` + replaces = map[string]string{ + "Golang": "Goframe", + "Good": "Nice", + } + rsStr = gstr.ReplaceIByMap(origin, replaces) + ) + fmt.Println(rsStr) + } + + { + var ( + origin = `Golang is Very Good` + replaces = map[string]string{ + "golang": "Goframe", + "good": "Nice", + } + rsStr = gstr.ReplaceIByMap(origin, replaces) + ) + fmt.Println(rsStr) + } + + // Output: + // Goframe is Very Nice + // Goframe is Very Nice +} + +func ExampleReverse() { + var ( + str = `123456` + rsStr = gstr.Reverse(str) + ) + fmt.Println(rsStr) + + // Output: + // 654321 +} + +func ExampleSearchArray() { + { + var ( + a = []string{"goframe", "is", "Very", "Nice"} + s = `goframe` + rsStr = gstr.SearchArray(a, s) + ) + fmt.Println(rsStr) + } + + { + var ( + a = []string{"goframe", "is", "Very", "Nice"} + s = `Very` + rsStr = gstr.SearchArray(a, s) + ) + fmt.Println(rsStr) + } + + { + var ( + a = []string{"goframe", "is", "Very", "Nice"} + s = `use` + rsStr = gstr.SearchArray(a, s) + ) + fmt.Println(rsStr) + } + + // Output: + // 0 + // 2 + // -1 +} + +func ExampleShuffle() { + var ( + str = `abcdefg` + rsStr = gstr.Shuffle(str) + ) + fmt.Println(rsStr) + + // May Output: + // efcgbda +} + +func ExampleSimilarText() { + { + var ( + percent *float64 + first = `goframe_is` + second = `go-nice` + rsStr = gstr.SimilarText(first, second, percent) + ) + fmt.Println(rsStr) + } + + { + var ( + first = `AaBbCcDd` + second = `ad` + ) + p := 0.80 + rsStr := gstr.SimilarText(first, second, &p) + fmt.Println(rsStr) + } + + // Output: + // 3 + // 2 +} + +func ExampleSoundex() { + { + var ( + str = `Euler` + str2 = `Ellery` + rsStr = gstr.Soundex(str) + rsStr2 = gstr.Soundex(str2) + ) + fmt.Println(rsStr, rsStr2) + } + + { + var ( + str = `Gauss` + str2 = `Ghosh` + rsStr = gstr.Soundex(str) + rsStr2 = gstr.Soundex(str2) + ) + fmt.Println(rsStr, rsStr2) + } + + { + var ( + str = `Lloyd` + str2 = `Ladd` + rsStr = gstr.Soundex(str) + rsStr2 = gstr.Soundex(str2) + ) + fmt.Println(rsStr, rsStr2) + } + + // Output: + // E406 E406 + // G020 G020 + // L030 L030 +} + +func ExampleSplit() { + var ( + str = `GoFrame_Nice` + delimiter = `_` + rsStr = gstr.Split(str, delimiter) + ) + fmt.Printf(`%#v`, rsStr) + + // Output: + // []string{"GoFrame", "Nice"} +} + +func ExampleSplitAndTrim() { + var ( + str = ` goframe, is, Very ,Nice ,to, use` + delimiter = `,` + characterMask = ` ` + rsStr = gstr.SplitAndTrim(str, delimiter, characterMask) + ) + fmt.Printf("%#v", rsStr) + + // Output: + // []string{"goframe", "is", "Very", "Nice", "to", "use"} +} + +func ExampleStr() { + var ( + haystack = `xxx.jpg` + needle = `.` + rsStr = gstr.Str(haystack, needle) + ) + fmt.Println(rsStr) + + // Output: + // .jpg +} + +func ExampleStrEx() { + var ( + haystack = `https://goframe.org/index.html?a=1&b=2` + needle = `?` + rsStr = gstr.StrEx(haystack, needle) + ) + fmt.Println(rsStr) + + // Output: + // a=1&b=2 +} + +func ExampleStrLimit() { + { + var ( + str = `1234567890.png` + length = 4 + suffix = `.jpg` + rsStr = gstr.StrLimit(str, length, suffix) + ) + fmt.Println(rsStr) + } + + { + var ( + str = `123456789` + length = 3 + suffix = `...` + rsStr = gstr.StrLimit(str, length, suffix) + ) + fmt.Println(rsStr) + } + + // Output: + // 1234.jpg + // 123... +} + +func ExampleStrLimitRune() { + { + var ( + str = `123456789` + length = 5 + suffix = "ABCD" + rsStr = gstr.StrLimitRune(str, length, suffix) + ) + fmt.Println(rsStr) + } + + { + var ( + str = `goframe是一个好用的框架她提供了非常丰富的工具给使用者.` + length = 15 + suffix = "!" + rsStr = gstr.StrLimitRune(str, length, suffix) + ) + fmt.Println(rsStr) + } + + // Output: + // 12345ABCD + // goframe是一个好用的框架! +} + +func ExampleStrTill() { + { + var ( + haystack = `goframe是一个好用的框架,她提供了非常丰富的工具给使用者.` + needle = `,` + rsStr = gstr.StrTill(haystack, needle) + ) + fmt.Println(rsStr) + } + + { + var ( + haystack = `https://goframe.org/index.html?test=123456` + needle = `?` + rsStr = gstr.StrTill(haystack, needle) + ) + fmt.Println(rsStr) + } + + // Output: + // goframe是一个好用的框架, + // https://goframe.org/index.html? +} + +func ExampleStrTillEx() { + { + var ( + haystack = `xxxx.txt` + needle = `.txt` + rsStr = gstr.StrTillEx(haystack, needle) + ) + fmt.Println(rsStr) + } + + { + var ( + haystack = `文件名.zip` + needle = `.zip` + rsStr = gstr.StrTillEx(haystack, needle) + ) + fmt.Println(rsStr) + } + + // Output: + // xxxx + // 文件名 +} + +func ExampleStripSlashes() { + var ( + str = `C:\\windows\\GoFrame\\test` + rsStr = gstr.StripSlashes(str) + ) + fmt.Println(rsStr) + + // Output: + // C:\windows\GoFrame\test +} + +func ExampleSubStr() { + { + var ( + str = `123456789` + start = 0 + length = 2 + subStr = gstr.SubStr(str, start, length) + ) + fmt.Println(subStr) + } + + { + var ( + str = `123456789` + start = 5 + length = 3 + subStr = gstr.SubStr(str, start, length) + ) + fmt.Println(subStr) + } + + // Output: + // 12 + // 678 +} + +func ExampleSubStrRune() { + { + var ( + str = `123456789` + start = 5 + length = 4 + subStr = gstr.SubStrRune(str, start, length) + ) + fmt.Println(subStr) + } + { + var ( + str = `一二三四五六七八九零` + start = 5 + length = 4 + subStr = gstr.SubStrRune(str, start, length) + ) + fmt.Println(subStr) + } + // Output: + // 6789 + // 六七八九 +} + +func ExampleToLower() { + var ( + s = `GOFRAME IS VERY NICE TO USE` + rsStr = gstr.ToLower(s) + ) + fmt.Println(rsStr) + + // Output: + // goframe is very nice to use +} + +func ExampleToUpper() { + var ( + s = `goframe is very nice to use` + rsStr = gstr.ToUpper(s) + ) + fmt.Println(rsStr) + + // Output: + // GOFRAME IS VERY NICE TO USE +} + +func ExampleTrim() { + var ( + str = `.abc.def..` + characterMask = "." + rsStr = gstr.Trim(str, characterMask) + ) + fmt.Println(rsStr) + + // Output: + // abc.def +} + +func ExampleTrimAll() { + var ( + str = `.abc.def...` + characterMask = "." + rsStr = gstr.TrimAll(str, characterMask) + ) + fmt.Println(rsStr) + + // Output: + // abcdef +} + +func ExampleTrimLeft() { + var ( + str = `..abc.def.. ` + characterMask = "." + rsStr = gstr.TrimLeft(str, characterMask) + ) + fmt.Println(rsStr) + + // Output: + // abc.def.. +} + +func ExampleTrimLeftStr() { + var ( + str = `...abcd..efg...` + cut = "." + count = 2 + rsStr = gstr.TrimLeftStr(str, cut, count) + ) + fmt.Println(rsStr) + + // Output: + // .abcd..efg... +} + +func ExampleTrimRight() { + var ( + str = `abcdef ` + characterMask = "def" // []byte{"d", "e", "f"} + rsStr = gstr.TrimRight(str, characterMask) + ) + fmt.Println(rsStr) + + // Output: + // abc +} + +func ExampleTrimRightStr() { + { + var ( + str = `aaa,bbb,ccc,ddd,eee,` + cut = "," + count = 1 + rsStr = gstr.TrimRightStr(str, cut, count) + ) + fmt.Println(rsStr) + } + + { + var ( + str = `aaa,bbb,ccc,ddd,eee,,,,,` + cut = "," + count = -1 + rsStr = gstr.TrimRightStr(str, cut, count) + ) + fmt.Println(rsStr) + } + + { + var ( + str = `aaa,bbb,ccc,ddd,eee,,,,, ` + cut = "," + count = -1 + rsStr = gstr.TrimRightStr(str, cut, count) + ) + fmt.Println(rsStr) + } + + // Output: + // aaa,bbb,ccc,ddd,eee + // aaa,bbb,ccc,ddd,eee + // aaa,bbb,ccc,ddd,eee,,,,, +} + +func ExampleTrimStr() { + { + var ( + str = `goframe is Very Nice to-use` + cut = "goframe" + rsStr = gstr.TrimStr(str, cut) + ) + fmt.Println(rsStr) + } + { + var ( + str = `goframe is Very Nice to-use` + cut = "use" + count = -1 + rsStr = gstr.TrimStr(str, cut, count) + ) + fmt.Println(rsStr) + } + + // Output: + // is Very Nice to-use + // goframe is Very Nice to- +} + +func ExampleUcFirst() { + var ( + s = `goframe is very nice to use.` + rsStr = gstr.UcFirst(s) + ) + fmt.Println(rsStr) + + // Output: + // Goframe is very nice to use. +} + +func ExampleUcWords() { + var ( + str = `goframe is very nice to use.` + rsStr = gstr.UcWords(str) + ) + fmt.Println(rsStr) + + // Output: + // Goframe Is Very Nice To Use. +} + +func ExampleWordWrap() { + { + var ( + str = `A very long woooooooooooooooooord. and something` + width = 8 + br = "\n" + rsStr = gstr.WordWrap(str, width, br) + ) + fmt.Println(rsStr) + } + + { + var ( + str = `The quick brown fox jumped over the lazy dog.` + width = 20 + br = "
\n" + rsStr = gstr.WordWrap(str, width, br) + ) + fmt.Printf("%v", rsStr) + } + + // Output: + // A very + // long + // woooooooooooooooooord. + // and + // something + // The quick brown fox
+ // jumped over the lazy
+ // dog. +}