diff --git a/docs/strutil.md b/docs/strutil.md index 5f402da..8243c8c 100644 --- a/docs/strutil.md +++ b/docs/strutil.md @@ -1,16 +1,17 @@ # Strutil + Package strutil contains some functions to manipulate string.
## Source: -- [https://github.com/duke-git/lancet/blob/main/strutil/string.go](https://github.com/duke-git/lancet/blob/main/strutil/string.go) - +- [https://github.com/duke-git/lancet/blob/main/strutil/string.go](https://github.com/duke-git/lancet/blob/main/strutil/string.go) ## Usage: + ```go import ( "github.com/duke-git/lancet/v2/strutil" @@ -20,34 +21,34 @@ import ( ## Index -- [After](#After) -- [AfterLast](#AfterLast) -- [Before](#Before) -- [BeforeLast](#BeforeLast) -- [CamelCase](#CamelCase) -- [Capitalize](#Capitalize) -- [IsString](#IsString) -- [KebabCase](#KebabCase) -- [UpperKebabCase](#UpperKebabCase) -- [LowerFirst](#LowerFirst) -- [UpperFirst](#UpperFirst) -- [PadEnd](#PadEnd) -- [PadStart](#PadStart) -- [Reverse](#Reverse) -- [SnakeCase](#SnakeCase) -- [UpperSnakeCase](#UpperSnakeCase) -- [SplitEx](#SplitEx) -- [Substring](#Substring) -- [Wrap](#Wrap) -- [Unwrap](#Unwrap) - + +- [After](#After) +- [AfterLast](#AfterLast) +- [Before](#Before) +- [BeforeLast](#BeforeLast) +- [CamelCase](#CamelCase) +- [Capitalize](#Capitalize) +- [IsString](#IsString) +- [KebabCase](#KebabCase) +- [UpperKebabCase](#UpperKebabCase) +- [LowerFirst](#LowerFirst) +- [UpperFirst](#UpperFirst) +- [PadEnd](#PadEnd) +- [PadStart](#PadStart) +- [Reverse](#Reverse) +- [SnakeCase](#SnakeCase) +- [UpperSnakeCase](#UpperSnakeCase) +- [SplitEx](#SplitEx) +- [Substring](#Substring) +- [Wrap](#Wrap) +- [Unwrap](#Unwrap) ## Documentation - ### After +Returns the substring after the first occurrence of a specified string in the source string.
Signature: @@ -55,37 +56,39 @@ import ( ```go func After(s, char string) string ``` + Example: ```go import ( - "fmt" - "github.com/duke-git/lancet/v2/strutil" + "fmt" + "github.com/duke-git/lancet/v2/strutil" ) func main() { - result1 := strutil.After("foo", "") - result2 := strutil.After("foo", "foo") - result3 := strutil.After("foo/bar", "foo") - result4 := strutil.After("foo/bar", "/") - result5 := strutil.After("foo/bar/baz", "/") + result1 := strutil.After("foo", "") + result2 := strutil.After("foo", "foo") + result3 := strutil.After("foo/bar", "foo") + result4 := strutil.After("foo/bar", "/") + result5 := strutil.After("foo/bar/baz", "/") - fmt.Println(result1) - fmt.Println(result2) - fmt.Println(result3) - fmt.Println(result4) - fmt.Println(result5) + fmt.Println(result1) + fmt.Println(result2) + fmt.Println(result3) + fmt.Println(result4) + fmt.Println(result5) - // Output: - // foo - // - // /bar - // bar - // bar/baz + // Output: + // foo + // + // /bar + // bar + // bar/baz } ``` ### AfterLast +Returns the substring after the last occurrence of a specified string in the source string.
Signature: @@ -93,37 +96,39 @@ func main() { ```go func AfterLast(s, char string) string ``` + Example: ```go import ( - "fmt" - "github.com/duke-git/lancet/v2/strutil" + "fmt" + "github.com/duke-git/lancet/v2/strutil" ) func main() { - result1 := strutil.AfterLast("foo", "") - result2 := strutil.AfterLast("foo", "foo") - result3 := strutil.AfterLast("foo/bar", "/") - result4 := strutil.AfterLast("foo/bar/baz", "/") - result5 := strutil.AfterLast("foo/bar/foo/baz", "foo") + result1 := strutil.AfterLast("foo", "") + result2 := strutil.AfterLast("foo", "foo") + result3 := strutil.AfterLast("foo/bar", "/") + result4 := strutil.AfterLast("foo/bar/baz", "/") + result5 := strutil.AfterLast("foo/bar/foo/baz", "foo") - fmt.Println(result1) - fmt.Println(result2) - fmt.Println(result3) - fmt.Println(result4) - fmt.Println(result5) + fmt.Println(result1) + fmt.Println(result2) + fmt.Println(result3) + fmt.Println(result4) + fmt.Println(result5) - // Output: - // foo - // - // bar - // baz - // /baz + // Output: + // foo + // + // bar + // baz + // /baz } ``` ### Before +Returns the substring of the source string up to the first occurrence of the specified string.
Signature: @@ -131,34 +136,36 @@ func main() { ```go func Before(s, char string) string ``` + Example: ```go import ( - "fmt" - "github.com/duke-git/lancet/v2/strutil" + "fmt" + "github.com/duke-git/lancet/v2/strutil" ) func main() { - result1 := strutil.Before("foo", "") - result2 := strutil.Before("foo", "foo") - result3 := strutil.Before("foo/bar", "/") - result4 := strutil.Before("foo/bar/baz", "/") + result1 := strutil.Before("foo", "") + result2 := strutil.Before("foo", "foo") + result3 := strutil.Before("foo/bar", "/") + result4 := strutil.Before("foo/bar/baz", "/") - fmt.Println(result1) - fmt.Println(result2) - fmt.Println(result3) - fmt.Println(result4) + fmt.Println(result1) + fmt.Println(result2) + fmt.Println(result3) + fmt.Println(result4) - // Output: - // foo - // - // foo - // foo + // Output: + // foo + // + // foo + // foo } ``` ### BeforeLast +Returns the substring of the source string up to the last occurrence of the specified string.
Signature: @@ -166,34 +173,36 @@ func main() { ```go func BeforeLast(s, char string) string ``` + Example: ```go import ( - "fmt" - "github.com/duke-git/lancet/v2/strutil" + "fmt" + "github.com/duke-git/lancet/v2/strutil" ) func main() { - result1 := strutil.BeforeLast("foo", "") - result2 := strutil.BeforeLast("foo", "foo") - result3 := strutil.BeforeLast("foo/bar", "/") - result4 := strutil.BeforeLast("foo/bar/baz", "/") + result1 := strutil.BeforeLast("foo", "") + result2 := strutil.BeforeLast("foo", "foo") + result3 := strutil.BeforeLast("foo/bar", "/") + result4 := strutil.BeforeLast("foo/bar/baz", "/") - fmt.Println(result1) - fmt.Println(result2) - fmt.Println(result3) - fmt.Println(result4) + fmt.Println(result1) + fmt.Println(result2) + fmt.Println(result3) + fmt.Println(result4) - // Output: - // foo - // - // foo - // foo/bar + // Output: + // foo + // + // foo + // foo/bar } ``` ### CamelCase +Coverts string to camelCase string, non letters and numbers will be ignored.
Signature: @@ -201,32 +210,34 @@ func main() { ```go func CamelCase(s string) string ``` + Example: ```go import ( - "fmt" - "github.com/duke-git/lancet/v2/strutil" + "fmt" + "github.com/duke-git/lancet/v2/strutil" ) func main() { - strings := []string{"", "foobar", "&FOO:BAR$BAZ", "$foo%", "Foo-#1😄$_%^&*(1bar"} + strings := []string{"", "foobar", "&FOO:BAR$BAZ", "$foo%", "Foo-#1😄$_%^&*(1bar"} - for _, v := range strings { - s := strutil.CamelCase(v) - fmt.Println(s) - } + for _, v := range strings { + s := strutil.CamelCase(v) + fmt.Println(s) + } - // Output: - // - // foobar - // fooBarBaz - // foo - // foo11Bar + // Output: + // + // foobar + // fooBarBaz + // foo + // foo11Bar } ``` ### KebabCase +KebabCase covert string to kebab-case, non letters and numbers will be ignored.
Signature: @@ -234,32 +245,34 @@ func main() { ```go func KebabCase(s string) string ``` + Example: ```go import ( - "fmt" - "github.com/duke-git/lancet/v2/strutil" + "fmt" + "github.com/duke-git/lancet/v2/strutil" ) func main() { - strings := []string{"", "foo-bar", "Foo Bar-", "FOOBAR", "Foo-#1😄$_%^&*(1bar"} + strings := []string{"", "foo-bar", "Foo Bar-", "FOOBAR", "Foo-#1😄$_%^&*(1bar"} - for _, v := range strings { - s := strutil.KebabCase(v) - fmt.Println(s) - } + for _, v := range strings { + s := strutil.KebabCase(v) + fmt.Println(s) + } - // Output: - // - // foo-bar - // foo-bar - // foobar - // foo-1-1-bar + // Output: + // + // foo-bar + // foo-bar + // foobar + // foo-1-1-bar } ``` ### UpperKebabCase +UpperKebabCase covert string to upper KEBAB-CASE, non letters and numbers will be ignored.
Signature: @@ -267,32 +280,34 @@ func main() { ```go func UpperKebabCase(s string) string ``` + Example: ```go import ( - "fmt" - "github.com/duke-git/lancet/v2/strutil" + "fmt" + "github.com/duke-git/lancet/v2/strutil" ) func main() { - strings := []string{"", "foo-bar", "Foo Bar-", "FooBAR", "Foo-#1😄$_%^&*(1bar"} + strings := []string{"", "foo-bar", "Foo Bar-", "FooBAR", "Foo-#1😄$_%^&*(1bar"} - for _, v := range strings { - s := strutil.UpperKebabCase(v) - fmt.Println(s) - } + for _, v := range strings { + s := strutil.UpperKebabCase(v) + fmt.Println(s) + } - // Output: - // - // FOO-BAR - // FOO-BAR - // FOO-BAR - // FOO-1-1-BAR + // Output: + // + // FOO-BAR + // FOO-BAR + // FOO-BAR + // FOO-1-1-BAR } ``` ### Capitalize +Convert the first character of a string to upper case.
Signature: @@ -300,32 +315,34 @@ func main() { ```go func Capitalize(s string) string ``` + Example: ```go import ( - "fmt" - "github.com/duke-git/lancet/v2/strutil" + "fmt" + "github.com/duke-git/lancet/v2/strutil" ) func main() { - strings := []string{"", "Foo", "_foo", "fooBar", "foo-bar"} + strings := []string{"", "Foo", "_foo", "fooBar", "foo-bar"} - for _, v := range strings { - s := strutil.Capitalize(v) - fmt.Println(s) - } + for _, v := range strings { + s := strutil.Capitalize(v) + fmt.Println(s) + } - // Output: - // - // Foo - // _foo - // Foobar - // Foo-bar + // Output: + // + // Foo + // _foo + // Foobar + // Foo-bar } ``` ### IsString +Check if the value's data type is string.
Signature: @@ -333,37 +350,39 @@ func main() { ```go func IsString(v any) bool ``` + Example: ```go import ( - "fmt" - "github.com/duke-git/lancet/v2/strutil" + "fmt" + "github.com/duke-git/lancet/v2/strutil" ) func main() { - result1 := strutil.IsString("") - result2 := strutil.IsString("a") - result3 := strutil.IsString(1) - result4 := strutil.IsString(true) - result5 := strutil.IsString([]string{"a"}) + result1 := strutil.IsString("") + result2 := strutil.IsString("a") + result3 := strutil.IsString(1) + result4 := strutil.IsString(true) + result5 := strutil.IsString([]string{"a"}) - fmt.Println(result1) - fmt.Println(result2) - fmt.Println(result3) - fmt.Println(result4) - fmt.Println(result5) + fmt.Println(result1) + fmt.Println(result2) + fmt.Println(result3) + fmt.Println(result4) + fmt.Println(result5) - // Output: - // true - // true - // false - // false - // false + // Output: + // true + // true + // false + // false + // false } ``` ### LowerFirst +Convert the first character of string to lower case.
Signature: @@ -371,31 +390,33 @@ func main() { ```go func LowerFirst(s string) string ``` + Example: ```go import ( - "fmt" - "github.com/duke-git/lancet/v2/strutil" + "fmt" + "github.com/duke-git/lancet/v2/strutil" ) func main() { - strings := []string{"", "bar", "BAr", "Bar大"} + strings := []string{"", "bar", "BAr", "Bar大"} - for _, v := range strings { - s := strutil.LowerFirst(v) - fmt.Println(s) - } + for _, v := range strings { + s := strutil.LowerFirst(v) + fmt.Println(s) + } - // Output: - // - // bar - // bAr - // bar大 + // Output: + // + // bar + // bAr + // bar大 } ``` ### UpperFirst +Convert the first character of string to upper case.
Signature: @@ -403,31 +424,33 @@ func main() { ```go func UpperFirst(s string) string ``` + Example: ```go import ( - "fmt" - "github.com/duke-git/lancet/v2/strutil" + "fmt" + "github.com/duke-git/lancet/v2/strutil" ) func main() { - strings := []string{"", "bar", "BAr", "bar大"} + strings := []string{"", "bar", "BAr", "bar大"} - for _, v := range strings { - s := strutil.UpperFirst(v) - fmt.Println(s) - } + for _, v := range strings { + s := strutil.UpperFirst(v) + fmt.Println(s) + } - // Output: - // - // Bar - // BAr - // Bar大 + // Output: + // + // Bar + // BAr + // Bar大 } ``` ### PadEnd +Pads string on the right side if it's shorter than size.
Signature: @@ -435,43 +458,45 @@ func main() { ```go func PadEnd(source string, size int, padStr string) string ``` + Example: ```go import ( - "fmt" - "github.com/duke-git/lancet/v2/strutil" + "fmt" + "github.com/duke-git/lancet/v2/strutil" ) func main() { - result1 := strutil.PadEnd("foo", 1, "bar") - result2 := strutil.PadEnd("foo", 2, "bar") - result3 := strutil.PadEnd("foo", 3, "bar") - result4 := strutil.PadEnd("foo", 4, "bar") - result5 := strutil.PadEnd("foo", 5, "bar") - result6 := strutil.PadEnd("foo", 6, "bar") - result7 := strutil.PadEnd("foo", 7, "bar") + result1 := strutil.PadEnd("foo", 1, "bar") + result2 := strutil.PadEnd("foo", 2, "bar") + result3 := strutil.PadEnd("foo", 3, "bar") + result4 := strutil.PadEnd("foo", 4, "bar") + result5 := strutil.PadEnd("foo", 5, "bar") + result6 := strutil.PadEnd("foo", 6, "bar") + result7 := strutil.PadEnd("foo", 7, "bar") - fmt.Println(result1) - fmt.Println(result2) - fmt.Println(result3) - fmt.Println(result4) - fmt.Println(result5) - fmt.Println(result6) - fmt.Println(result7) + fmt.Println(result1) + fmt.Println(result2) + fmt.Println(result3) + fmt.Println(result4) + fmt.Println(result5) + fmt.Println(result6) + fmt.Println(result7) - // Output: - // foo - // foo - // foo - // foob - // fooba - // foobar - // foobarb + // Output: + // foo + // foo + // foo + // foob + // fooba + // foobar + // foobarb } ``` ### PadStart +Pads string on the left side if it's shorter than size.
Signature: @@ -479,43 +504,45 @@ func main() { ```go func PadStart(source string, size int, padStr string) string ``` + Example: ```go import ( - "fmt" - "github.com/duke-git/lancet/v2/strutil" + "fmt" + "github.com/duke-git/lancet/v2/strutil" ) func main() { - result1 := strutil.PadStart("foo", 1, "bar") - result2 := strutil.PadStart("foo", 2, "bar") - result3 := strutil.PadStart("foo", 3, "bar") - result4 := strutil.PadStart("foo", 4, "bar") - result5 := strutil.PadStart("foo", 5, "bar") - result6 := strutil.PadStart("foo", 6, "bar") - result7 := strutil.PadStart("foo", 7, "bar") + result1 := strutil.PadStart("foo", 1, "bar") + result2 := strutil.PadStart("foo", 2, "bar") + result3 := strutil.PadStart("foo", 3, "bar") + result4 := strutil.PadStart("foo", 4, "bar") + result5 := strutil.PadStart("foo", 5, "bar") + result6 := strutil.PadStart("foo", 6, "bar") + result7 := strutil.PadStart("foo", 7, "bar") - fmt.Println(result1) - fmt.Println(result2) - fmt.Println(result3) - fmt.Println(result4) - fmt.Println(result5) - fmt.Println(result6) - fmt.Println(result7) + fmt.Println(result1) + fmt.Println(result2) + fmt.Println(result3) + fmt.Println(result4) + fmt.Println(result5) + fmt.Println(result6) + fmt.Println(result7) - // Output: - // foo - // foo - // foo - // bfoo - // bafoo - // barfoo - // barbfoo + // Output: + // foo + // foo + // foo + // bfoo + // bafoo + // barfoo + // barbfoo } ``` ### Reverse +Return string whose char order is reversed to the given string.
Signature: @@ -523,28 +550,30 @@ func main() { ```go func Reverse(s string) string ``` + Example: ```go import ( - "fmt" - "github.com/duke-git/lancet/v2/strutil" + "fmt" + "github.com/duke-git/lancet/v2/strutil" ) func main() { - s := "foo" - rs := strutil.Reverse(s) + s := "foo" + rs := strutil.Reverse(s) - fmt.Println(s) - fmt.Println(rs) + fmt.Println(s) + fmt.Println(rs) - // Output: - // foo - // oof + // Output: + // foo + // oof } ``` ### SnakeCase +Coverts string to snake_case, non letters and numbers will be ignored.
Signature: @@ -552,32 +581,34 @@ func main() { ```go func SnakeCase(s string) string ``` + Example: ```go import ( - "fmt" - "github.com/duke-git/lancet/v2/strutil" + "fmt" + "github.com/duke-git/lancet/v2/strutil" ) func main() { - strings := []string{"", "foo-bar", "Foo Bar-", "FOOBAR", "Foo-#1😄$_%^&*(1bar"} + strings := []string{"", "foo-bar", "Foo Bar-", "FOOBAR", "Foo-#1😄$_%^&*(1bar"} - for _, v := range strings { - s := strutil.SnakeCase(v) - fmt.Println(s) - } + for _, v := range strings { + s := strutil.SnakeCase(v) + fmt.Println(s) + } - // Output: - // - // foo_bar - // foo_bar - // foobar - // foo_1_1_bar + // Output: + // + // foo_bar + // foo_bar + // foobar + // foo_1_1_bar } ``` ### UpperSnakeCase +Coverts string to upper KEBAB-CASE, non letters and numbers will be ignored.
Signature: @@ -585,32 +616,34 @@ func main() { ```go func SnakeCase(s string) string ``` + Example: ```go import ( - "fmt" - "github.com/duke-git/lancet/v2/strutil" + "fmt" + "github.com/duke-git/lancet/v2/strutil" ) func main() { - strings := []string{"", "foo-bar", "Foo Bar-", "FooBAR", "Foo-#1😄$_%^&*(1bar"} + strings := []string{"", "foo-bar", "Foo Bar-", "FooBAR", "Foo-#1😄$_%^&*(1bar"} - for _, v := range strings { - s := strutil.UpperSnakeCase(v) - fmt.Println(s) - } + for _, v := range strings { + s := strutil.UpperSnakeCase(v) + fmt.Println(s) + } - // Output: - // - // FOO_BAR - // FOO_BAR - // FOO_BAR - // FOO_1_1_BAR + // Output: + // + // FOO_BAR + // FOO_BAR + // FOO_BAR + // FOO_1_1_BAR } ``` ### SplitEx +Split a given string whether the result contains empty string.
Signature: @@ -618,38 +651,40 @@ func main() { ```go func SplitEx(s, sep string, removeEmptyString bool) []string ``` + Example: ```go import ( - "fmt" - "github.com/duke-git/lancet/v2/strutil" + "fmt" + "github.com/duke-git/lancet/v2/strutil" ) func main() { - result1 := strutil.SplitEx(" a b c ", "", true) + result1 := strutil.SplitEx(" a b c ", "", true) - result2 := strutil.SplitEx(" a b c ", " ", false) - result3 := strutil.SplitEx(" a b c ", " ", true) + result2 := strutil.SplitEx(" a b c ", " ", false) + result3 := strutil.SplitEx(" a b c ", " ", true) - result4 := strutil.SplitEx("a = b = c = ", " = ", false) - result5 := strutil.SplitEx("a = b = c = ", " = ", true) + result4 := strutil.SplitEx("a = b = c = ", " = ", false) + result5 := strutil.SplitEx("a = b = c = ", " = ", true) - fmt.Println(result1) - fmt.Println(result2) - fmt.Println(result3) - fmt.Println(result4) - fmt.Println(result5) + fmt.Println(result1) + fmt.Println(result2) + fmt.Println(result3) + fmt.Println(result4) + fmt.Println(result5) - // Output: - // [] - // [ a b c ] - // [a b c] - // [a b c ] + // Output: + // [] + // [ a b c ] + // [a b c] + // [a b c ] } ``` ### Substring +Returns a substring of the specified length starting at the specified offset position.
Signature: @@ -657,40 +692,42 @@ func main() { ```go func Substring(s string, offset int, length uint) string ``` + Example: ```go import ( - "fmt" - "github.com/duke-git/lancet/v2/strutil" + "fmt" + "github.com/duke-git/lancet/v2/strutil" ) func main() { - result1 := strutil.Substring("abcde", 1, 3) - result2 := strutil.Substring("abcde", 1, 5) - result3 := strutil.Substring("abcde", -1, 3) - result4 := strutil.Substring("abcde", -2, 2) - result5 := strutil.Substring("abcde", -2, 3) - result6 := strutil.Substring("你好,欢迎你", 0, 2) + result1 := strutil.Substring("abcde", 1, 3) + result2 := strutil.Substring("abcde", 1, 5) + result3 := strutil.Substring("abcde", -1, 3) + result4 := strutil.Substring("abcde", -2, 2) + result5 := strutil.Substring("abcde", -2, 3) + result6 := strutil.Substring("你好,欢迎你", 0, 2) - fmt.Println(result1) - fmt.Println(result2) - fmt.Println(result3) - fmt.Println(result4) - fmt.Println(result5) - fmt.Println(result6) + fmt.Println(result1) + fmt.Println(result2) + fmt.Println(result3) + fmt.Println(result4) + fmt.Println(result5) + fmt.Println(result6) - // Output: - // bcd - // bcde - // e - // de - // de - // 你好 + // Output: + // bcd + // bcde + // e + // de + // de + // 你好 } ``` ### Wrap +Wrap a string with given string.
Signature: @@ -698,35 +735,36 @@ func main() { ```go func Wrap(str string, wrapWith string) string ``` + Example: ```go import ( - "fmt" - "github.com/duke-git/lancet/v2/strutil" + "fmt" + "github.com/duke-git/lancet/v2/strutil" ) func main() { - result1 := strutil.Wrap("foo", "") - result2 := strutil.Wrap("foo", "*") - result3 := strutil.Wrap("'foo'", "'") - result4 := strutil.Wrap("", "*") + result1 := strutil.Wrap("foo", "") + result2 := strutil.Wrap("foo", "*") + result3 := strutil.Wrap("'foo'", "'") + result4 := strutil.Wrap("", "*") - fmt.Println(result1) - fmt.Println(result2) - fmt.Println(result3) - fmt.Println(result4) + fmt.Println(result1) + fmt.Println(result2) + fmt.Println(result3) + fmt.Println(result4) - // Output: - // foo - // *foo* - // ''foo'' - // + // Output: + // foo + // *foo* + // ''foo'' + // } ``` - ### Wrap +Unwrap a given string from anther string. will change source string.
Signature: @@ -734,41 +772,33 @@ func main() { ```go func Unwrap(str string, wrapToken string) string ``` + Example: ```go import ( - "fmt" - "github.com/duke-git/lancet/v2/strutil" + "fmt" + "github.com/duke-git/lancet/v2/strutil" ) func main() { - result1 := strutil.Unwrap("foo", "") - result2 := strutil.Unwrap("*foo*", "*") - result3 := strutil.Unwrap("*foo", "*") - result4 := strutil.Unwrap("foo*", "*") - result5 := strutil.Unwrap("**foo**", "*") + result1 := strutil.Unwrap("foo", "") + result2 := strutil.Unwrap("*foo*", "*") + result3 := strutil.Unwrap("*foo", "*") + result4 := strutil.Unwrap("foo*", "*") + result5 := strutil.Unwrap("**foo**", "*") - fmt.Println(result1) - fmt.Println(result2) - fmt.Println(result3) - fmt.Println(result4) - fmt.Println(result5) + fmt.Println(result1) + fmt.Println(result2) + fmt.Println(result3) + fmt.Println(result4) + fmt.Println(result5) - // Output: - // foo - // foo - // *foo - // foo* - // *foo* + // Output: + // foo + // foo + // *foo + // foo* + // *foo* } ``` - - - - - - - - - diff --git a/docs/strutil_zh-CN.md b/docs/strutil_zh-CN.md index 74b3960..e2557de 100644 --- a/docs/strutil_zh-CN.md +++ b/docs/strutil_zh-CN.md @@ -1,16 +1,17 @@ # Strutil -strutil包含处理字符串的相关函数。 + +strutil 包含处理字符串的相关函数。 ## 源码: -- [https://github.com/duke-git/lancet/blob/main/strutil/string.go](https://github.com/duke-git/lancet/blob/main/strutil/string.go) - +- [https://github.com/duke-git/lancet/blob/main/strutil/string.go](https://github.com/duke-git/lancet/blob/main/strutil/string.go) ## 用法: + ```go import ( "github.com/duke-git/lancet/v2/strutil" @@ -20,35 +21,34 @@ import ( ## 目录 -- [After](#After) -- [AfterLast](#AfterLast) -- [Before](#Before) -- [BeforeLast](#BeforeLast) -- [CamelCase](#CamelCase) -- [Capitalize](#Capitalize) -- [IsString](#IsString) -- [KebabCase](#KebabCase) -- [UpperKebabCase](#UpperKebabCase) -- [LowerFirst](#LowerFirst) -- [UpperFirst](#UpperFirst) -- [PadEnd](#PadEnd) -- [PadStart](#PadStart) -- [Reverse](#Reverse) -- [SnakeCase](#SnakeCase) -- [UpperSnakeCase](#UpperSnakeCase) -- [SplitEx](#SplitEx) -- [Substring](#Substring) -- [Wrap](#Wrap) -- [Unwrap](#Unwrap) - + +- [After](#After) +- [AfterLast](#AfterLast) +- [Before](#Before) +- [BeforeLast](#BeforeLast) +- [CamelCase](#CamelCase) +- [Capitalize](#Capitalize) +- [IsString](#IsString) +- [KebabCase](#KebabCase) +- [UpperKebabCase](#UpperKebabCase) +- [LowerFirst](#LowerFirst) +- [UpperFirst](#UpperFirst) +- [PadEnd](#PadEnd) +- [PadStart](#PadStart) +- [Reverse](#Reverse) +- [SnakeCase](#SnakeCase) +- [UpperSnakeCase](#UpperSnakeCase) +- [SplitEx](#SplitEx) +- [Substring](#Substring) +- [Wrap](#Wrap) +- [Unwrap](#Unwrap) - -## Documentation文档 - +## Documentation 文档 ### After +返回源字符串中特定字符串首次出现时的位置之后的子字符串。
函数签名: @@ -56,37 +56,39 @@ import ( ```go func After(s, char string) string ``` + 示例: ```go import ( - "fmt" - "github.com/duke-git/lancet/v2/strutil" + "fmt" + "github.com/duke-git/lancet/v2/strutil" ) func main() { - result1 := strutil.After("foo", "") - result2 := strutil.After("foo", "foo") - result3 := strutil.After("foo/bar", "foo") - result4 := strutil.After("foo/bar", "/") - result5 := strutil.After("foo/bar/baz", "/") + result1 := strutil.After("foo", "") + result2 := strutil.After("foo", "foo") + result3 := strutil.After("foo/bar", "foo") + result4 := strutil.After("foo/bar", "/") + result5 := strutil.After("foo/bar/baz", "/") - fmt.Println(result1) - fmt.Println(result2) - fmt.Println(result3) - fmt.Println(result4) - fmt.Println(result5) + fmt.Println(result1) + fmt.Println(result2) + fmt.Println(result3) + fmt.Println(result4) + fmt.Println(result5) - // Output: - // foo - // - // /bar - // bar - // bar/baz + // Output: + // foo + // + // /bar + // bar + // bar/baz } ``` ### AfterLast +返回源字符串中指定字符串最后一次出现时的位置之后的子字符串。
函数签名: @@ -94,37 +96,39 @@ func main() { ```go func AfterLast(s, char string) string ``` + 示例: ```go import ( - "fmt" - "github.com/duke-git/lancet/v2/strutil" + "fmt" + "github.com/duke-git/lancet/v2/strutil" ) func main() { - result1 := strutil.AfterLast("foo", "") - result2 := strutil.AfterLast("foo", "foo") - result3 := strutil.AfterLast("foo/bar", "/") - result4 := strutil.AfterLast("foo/bar/baz", "/") - result5 := strutil.AfterLast("foo/bar/foo/baz", "foo") + result1 := strutil.AfterLast("foo", "") + result2 := strutil.AfterLast("foo", "foo") + result3 := strutil.AfterLast("foo/bar", "/") + result4 := strutil.AfterLast("foo/bar/baz", "/") + result5 := strutil.AfterLast("foo/bar/foo/baz", "foo") - fmt.Println(result1) - fmt.Println(result2) - fmt.Println(result3) - fmt.Println(result4) - fmt.Println(result5) + fmt.Println(result1) + fmt.Println(result2) + fmt.Println(result3) + fmt.Println(result4) + fmt.Println(result5) - // Output: - // foo - // - // bar - // baz - // /baz + // Output: + // foo + // + // bar + // baz + // /baz } ``` ### Before +返回源字符串中指定字符串第一次出现时的位置之前的子字符串。
函数签名: @@ -132,34 +136,36 @@ func main() { ```go func Before(s, char string) string ``` + 示例: ```go import ( - "fmt" - "github.com/duke-git/lancet/v2/strutil" + "fmt" + "github.com/duke-git/lancet/v2/strutil" ) func main() { - result1 := strutil.Before("foo", "") - result2 := strutil.Before("foo", "foo") - result3 := strutil.Before("foo/bar", "/") - result4 := strutil.Before("foo/bar/baz", "/") + result1 := strutil.Before("foo", "") + result2 := strutil.Before("foo", "foo") + result3 := strutil.Before("foo/bar", "/") + result4 := strutil.Before("foo/bar/baz", "/") - fmt.Println(result1) - fmt.Println(result2) - fmt.Println(result3) - fmt.Println(result4) + fmt.Println(result1) + fmt.Println(result2) + fmt.Println(result3) + fmt.Println(result4) - // Output: - // foo - // - // foo - // foo + // Output: + // foo + // + // foo + // foo } ``` ### BeforeLast +返回源字符串中指定字符串最后一次出现时的位置之前的子字符串。
函数签名: @@ -167,34 +173,36 @@ func main() { ```go func BeforeLast(s, char string) string ``` + 示例: ```go import ( - "fmt" - "github.com/duke-git/lancet/v2/strutil" + "fmt" + "github.com/duke-git/lancet/v2/strutil" ) func main() { - result1 := strutil.BeforeLast("foo", "") - result2 := strutil.BeforeLast("foo", "foo") - result3 := strutil.BeforeLast("foo/bar", "/") - result4 := strutil.BeforeLast("foo/bar/baz", "/") + result1 := strutil.BeforeLast("foo", "") + result2 := strutil.BeforeLast("foo", "foo") + result3 := strutil.BeforeLast("foo/bar", "/") + result4 := strutil.BeforeLast("foo/bar/baz", "/") - fmt.Println(result1) - fmt.Println(result2) - fmt.Println(result3) - fmt.Println(result4) + fmt.Println(result1) + fmt.Println(result2) + fmt.Println(result3) + fmt.Println(result4) - // Output: - // foo - // - // foo - // foo/bar + // Output: + // foo + // + // foo + // foo/bar } ``` ### CamelCase +将字符串转换为驼峰式字符串, 非字母和数字会被忽略。
函数签名: @@ -202,32 +210,34 @@ func main() { ```go func CamelCase(s string) string ``` + 示例: ```go import ( - "fmt" - "github.com/duke-git/lancet/v2/strutil" + "fmt" + "github.com/duke-git/lancet/v2/strutil" ) func main() { - strings := []string{"", "foobar", "&FOO:BAR$BAZ", "$foo%", "Foo-#1😄$_%^&*(1bar"} + strings := []string{"", "foobar", "&FOO:BAR$BAZ", "$foo%", "Foo-#1😄$_%^&*(1bar"} - for _, v := range strings { - s := strutil.CamelCase(v) - fmt.Println(s) - } + for _, v := range strings { + s := strutil.CamelCase(v) + fmt.Println(s) + } - // Output: - // - // foobar - // fooBarBaz - // foo - // foo11Bar + // Output: + // + // foobar + // fooBarBaz + // foo + // foo11Bar } ``` ### KebabCase +将字符串转换为kebab-case, 非字母和数字会被忽略。
函数签名: @@ -235,32 +245,34 @@ func main() { ```go func KebabCase(s string) string ``` + 示例: ```go import ( - "fmt" - "github.com/duke-git/lancet/v2/strutil" + "fmt" + "github.com/duke-git/lancet/v2/strutil" ) func main() { - strings := []string{"", "foo-bar", "Foo Bar-", "FOOBAR", "Foo-#1😄$_%^&*(1bar"} + strings := []string{"", "foo-bar", "Foo Bar-", "FOOBAR", "Foo-#1😄$_%^&*(1bar"} - for _, v := range strings { - s := strutil.KebabCase(v) - fmt.Println(s) - } + for _, v := range strings { + s := strutil.KebabCase(v) + fmt.Println(s) + } - // Output: - // - // foo-bar - // foo-bar - // foobar - // foo-1-1-bar + // Output: + // + // foo-bar + // foo-bar + // foobar + // foo-1-1-bar } ``` ### UpperKebabCase +将字符串转换为大写KEBAB-CASE, 非字母和数字会被忽略。
函数签名: @@ -268,32 +280,34 @@ func main() { ```go func UpperKebabCase(s string) string ``` + 示例: ```go import ( - "fmt" - "github.com/duke-git/lancet/v2/strutil" + "fmt" + "github.com/duke-git/lancet/v2/strutil" ) func main() { - strings := []string{"", "foo-bar", "Foo Bar-", "FooBAR", "Foo-#1😄$_%^&*(1bar"} + strings := []string{"", "foo-bar", "Foo Bar-", "FooBAR", "Foo-#1😄$_%^&*(1bar"} - for _, v := range strings { - s := strutil.UpperKebabCase(v) - fmt.Println(s) - } + for _, v := range strings { + s := strutil.UpperKebabCase(v) + fmt.Println(s) + } - // Output: - // - // FOO-BAR - // FOO-BAR - // FOO-BAR - // FOO-1-1-BAR + // Output: + // + // FOO-BAR + // FOO-BAR + // FOO-BAR + // FOO-1-1-BAR } ``` ### Capitalize +将字符串的第一个字符转换为大写。
函数签名: @@ -301,32 +315,34 @@ func main() { ```go func Capitalize(s string) string ``` + 示例: ```go import ( - "fmt" - "github.com/duke-git/lancet/v2/strutil" + "fmt" + "github.com/duke-git/lancet/v2/strutil" ) func main() { - strings := []string{"", "Foo", "_foo", "fooBar", "foo-bar"} + strings := []string{"", "Foo", "_foo", "fooBar", "foo-bar"} - for _, v := range strings { - s := strutil.Capitalize(v) - fmt.Println(s) - } + for _, v := range strings { + s := strutil.Capitalize(v) + fmt.Println(s) + } - // Output: - // - // Foo - // _foo - // Foobar - // Foo-bar + // Output: + // + // Foo + // _foo + // Foobar + // Foo-bar } ``` ### IsString +判断传入参数的数据类型是否为字符串。
函数签名: @@ -334,37 +350,39 @@ func main() { ```go func IsString(v any) bool ``` + 示例: ```go import ( - "fmt" - "github.com/duke-git/lancet/v2/strutil" + "fmt" + "github.com/duke-git/lancet/v2/strutil" ) func main() { - result1 := strutil.IsString("") - result2 := strutil.IsString("a") - result3 := strutil.IsString(1) - result4 := strutil.IsString(true) - result5 := strutil.IsString([]string{"a"}) + result1 := strutil.IsString("") + result2 := strutil.IsString("a") + result3 := strutil.IsString(1) + result4 := strutil.IsString(true) + result5 := strutil.IsString([]string{"a"}) - fmt.Println(result1) - fmt.Println(result2) - fmt.Println(result3) - fmt.Println(result4) - fmt.Println(result5) + fmt.Println(result1) + fmt.Println(result2) + fmt.Println(result3) + fmt.Println(result4) + fmt.Println(result5) - // Output: - // true - // true - // false - // false - // false + // Output: + // true + // true + // false + // false + // false } ``` ### LowerFirst +将字符串的第一个字符转换为小写。
函数签名: @@ -372,31 +390,33 @@ func main() { ```go func LowerFirst(s string) string ``` + 示例: ```go import ( - "fmt" - "github.com/duke-git/lancet/v2/strutil" + "fmt" + "github.com/duke-git/lancet/v2/strutil" ) func main() { - strings := []string{"", "bar", "BAr", "Bar大"} + strings := []string{"", "bar", "BAr", "Bar大"} - for _, v := range strings { - s := strutil.LowerFirst(v) - fmt.Println(s) - } + for _, v := range strings { + s := strutil.LowerFirst(v) + fmt.Println(s) + } - // Output: - // - // bar - // bAr - // bar大 + // Output: + // + // bar + // bAr + // bar大 } ``` ### UpperFirst +将字符串的第一个字符转换为大写形式。
函数签名: @@ -404,31 +424,33 @@ func main() { ```go func UpperFirst(s string) string ``` + 示例: ```go import ( - "fmt" - "github.com/duke-git/lancet/v2/strutil" + "fmt" + "github.com/duke-git/lancet/v2/strutil" ) func main() { - strings := []string{"", "bar", "BAr", "bar大"} + strings := []string{"", "bar", "BAr", "bar大"} - for _, v := range strings { - s := strutil.UpperFirst(v) - fmt.Println(s) - } + for _, v := range strings { + s := strutil.UpperFirst(v) + fmt.Println(s) + } - // Output: - // - // Bar - // BAr - // Bar大 + // Output: + // + // Bar + // BAr + // Bar大 } ``` ### PadEnd +如果字符串长度短于size,则在右侧填充字符串。
函数签名: @@ -436,43 +458,45 @@ func main() { ```go func PadEnd(source string, size int, padStr string) string ``` + 示例: ```go import ( - "fmt" - "github.com/duke-git/lancet/v2/strutil" + "fmt" + "github.com/duke-git/lancet/v2/strutil" ) func main() { - result1 := strutil.PadEnd("foo", 1, "bar") - result2 := strutil.PadEnd("foo", 2, "bar") - result3 := strutil.PadEnd("foo", 3, "bar") - result4 := strutil.PadEnd("foo", 4, "bar") - result5 := strutil.PadEnd("foo", 5, "bar") - result6 := strutil.PadEnd("foo", 6, "bar") - result7 := strutil.PadEnd("foo", 7, "bar") + result1 := strutil.PadEnd("foo", 1, "bar") + result2 := strutil.PadEnd("foo", 2, "bar") + result3 := strutil.PadEnd("foo", 3, "bar") + result4 := strutil.PadEnd("foo", 4, "bar") + result5 := strutil.PadEnd("foo", 5, "bar") + result6 := strutil.PadEnd("foo", 6, "bar") + result7 := strutil.PadEnd("foo", 7, "bar") - fmt.Println(result1) - fmt.Println(result2) - fmt.Println(result3) - fmt.Println(result4) - fmt.Println(result5) - fmt.Println(result6) - fmt.Println(result7) + fmt.Println(result1) + fmt.Println(result2) + fmt.Println(result3) + fmt.Println(result4) + fmt.Println(result5) + fmt.Println(result6) + fmt.Println(result7) - // Output: - // foo - // foo - // foo - // foob - // fooba - // foobar - // foobarb + // Output: + // foo + // foo + // foo + // foob + // fooba + // foobar + // foobarb } ``` ### PadStart +如果字符串长度短于size,则在左侧填充字符串。
函数签名: @@ -480,43 +504,45 @@ func main() { ```go func PadStart(source string, size int, padStr string) string ``` + 示例: ```go import ( - "fmt" - "github.com/duke-git/lancet/v2/strutil" + "fmt" + "github.com/duke-git/lancet/v2/strutil" ) func main() { - result1 := strutil.PadStart("foo", 1, "bar") - result2 := strutil.PadStart("foo", 2, "bar") - result3 := strutil.PadStart("foo", 3, "bar") - result4 := strutil.PadStart("foo", 4, "bar") - result5 := strutil.PadStart("foo", 5, "bar") - result6 := strutil.PadStart("foo", 6, "bar") - result7 := strutil.PadStart("foo", 7, "bar") + result1 := strutil.PadStart("foo", 1, "bar") + result2 := strutil.PadStart("foo", 2, "bar") + result3 := strutil.PadStart("foo", 3, "bar") + result4 := strutil.PadStart("foo", 4, "bar") + result5 := strutil.PadStart("foo", 5, "bar") + result6 := strutil.PadStart("foo", 6, "bar") + result7 := strutil.PadStart("foo", 7, "bar") - fmt.Println(result1) - fmt.Println(result2) - fmt.Println(result3) - fmt.Println(result4) - fmt.Println(result5) - fmt.Println(result6) - fmt.Println(result7) + fmt.Println(result1) + fmt.Println(result2) + fmt.Println(result3) + fmt.Println(result4) + fmt.Println(result5) + fmt.Println(result6) + fmt.Println(result7) - // Output: - // foo - // foo - // foo - // bfoo - // bafoo - // barfoo - // barbfoo + // Output: + // foo + // foo + // foo + // bfoo + // bafoo + // barfoo + // barbfoo } ``` ### Reverse +返回字符顺序与给定字符串相反的字符串。
函数签名: @@ -524,28 +550,30 @@ func main() { ```go func Reverse(s string) string ``` + 示例: ```go import ( - "fmt" - "github.com/duke-git/lancet/v2/strutil" + "fmt" + "github.com/duke-git/lancet/v2/strutil" ) func main() { - s := "foo" - rs := strutil.Reverse(s) + s := "foo" + rs := strutil.Reverse(s) - fmt.Println(s) - fmt.Println(rs) + fmt.Println(s) + fmt.Println(rs) - // Output: - // foo - // oof + // Output: + // foo + // oof } ``` ### SnakeCase +将字符串转换为snake_case形式, 非字母和数字会被忽略。
函数签名: @@ -553,32 +581,34 @@ func main() { ```go func SnakeCase(s string) string ``` + 示例: ```go import ( - "fmt" - "github.com/duke-git/lancet/v2/strutil" + "fmt" + "github.com/duke-git/lancet/v2/strutil" ) func main() { - strings := []string{"", "foo-bar", "Foo Bar-", "FOOBAR", "Foo-#1😄$_%^&*(1bar"} + strings := []string{"", "foo-bar", "Foo Bar-", "FOOBAR", "Foo-#1😄$_%^&*(1bar"} - for _, v := range strings { - s := strutil.SnakeCase(v) - fmt.Println(s) - } + for _, v := range strings { + s := strutil.SnakeCase(v) + fmt.Println(s) + } - // Output: - // - // foo_bar - // foo_bar - // foobar - // foo_1_1_bar + // Output: + // + // foo_bar + // foo_bar + // foobar + // foo_1_1_bar } ``` ### UpperSnakeCase +将字符串转换为大写SNAKE_CASE形式, 非字母和数字会被忽略。
函数签名: @@ -586,32 +616,34 @@ func main() { ```go func SnakeCase(s string) string ``` + 示例: ```go import ( - "fmt" - "github.com/duke-git/lancet/v2/strutil" + "fmt" + "github.com/duke-git/lancet/v2/strutil" ) func main() { - strings := []string{"", "foo-bar", "Foo Bar-", "FooBAR", "Foo-#1😄$_%^&*(1bar"} + strings := []string{"", "foo-bar", "Foo Bar-", "FooBAR", "Foo-#1😄$_%^&*(1bar"} - for _, v := range strings { - s := strutil.UpperSnakeCase(v) - fmt.Println(s) - } + for _, v := range strings { + s := strutil.UpperSnakeCase(v) + fmt.Println(s) + } - // Output: - // - // FOO_BAR - // FOO_BAR - // FOO_BAR - // FOO_1_1_BAR + // Output: + // + // FOO_BAR + // FOO_BAR + // FOO_BAR + // FOO_1_1_BAR } ``` ### SplitEx +分割字符串为切片,removeEmptyString参数指定是否去除空字符串。
函数签名: @@ -619,38 +651,40 @@ func main() { ```go func SplitEx(s, sep string, removeEmptyString bool) []string ``` + 示例: ```go import ( - "fmt" - "github.com/duke-git/lancet/v2/strutil" + "fmt" + "github.com/duke-git/lancet/v2/strutil" ) func main() { - result1 := strutil.SplitEx(" a b c ", "", true) + result1 := strutil.SplitEx(" a b c ", "", true) - result2 := strutil.SplitEx(" a b c ", " ", false) - result3 := strutil.SplitEx(" a b c ", " ", true) + result2 := strutil.SplitEx(" a b c ", " ", false) + result3 := strutil.SplitEx(" a b c ", " ", true) - result4 := strutil.SplitEx("a = b = c = ", " = ", false) - result5 := strutil.SplitEx("a = b = c = ", " = ", true) + result4 := strutil.SplitEx("a = b = c = ", " = ", false) + result5 := strutil.SplitEx("a = b = c = ", " = ", true) - fmt.Println(result1) - fmt.Println(result2) - fmt.Println(result3) - fmt.Println(result4) - fmt.Println(result5) + fmt.Println(result1) + fmt.Println(result2) + fmt.Println(result3) + fmt.Println(result4) + fmt.Println(result5) - // Output: - // [] - // [ a b c ] - // [a b c] - // [a b c ] + // Output: + // [] + // [ a b c ] + // [a b c] + // [a b c ] } ``` ### Substring +根据指定的位置和长度截取字符串。
函数签名: @@ -658,40 +692,42 @@ func main() { ```go func Substring(s string, offset int, length uint) string ``` + 示例: ```go import ( - "fmt" - "github.com/duke-git/lancet/v2/strutil" + "fmt" + "github.com/duke-git/lancet/v2/strutil" ) func main() { - result1 := strutil.Substring("abcde", 1, 3) - result2 := strutil.Substring("abcde", 1, 5) - result3 := strutil.Substring("abcde", -1, 3) - result4 := strutil.Substring("abcde", -2, 2) - result5 := strutil.Substring("abcde", -2, 3) - result6 := strutil.Substring("你好,欢迎你", 0, 2) + result1 := strutil.Substring("abcde", 1, 3) + result2 := strutil.Substring("abcde", 1, 5) + result3 := strutil.Substring("abcde", -1, 3) + result4 := strutil.Substring("abcde", -2, 2) + result5 := strutil.Substring("abcde", -2, 3) + result6 := strutil.Substring("你好,欢迎你", 0, 2) - fmt.Println(result1) - fmt.Println(result2) - fmt.Println(result3) - fmt.Println(result4) - fmt.Println(result5) - fmt.Println(result6) + fmt.Println(result1) + fmt.Println(result2) + fmt.Println(result3) + fmt.Println(result4) + fmt.Println(result5) + fmt.Println(result6) - // Output: - // bcd - // bcde - // e - // de - // de - // 你好 + // Output: + // bcd + // bcde + // e + // de + // de + // 你好 } ``` ### Wrap +用另一个字符串包裹一个字符串。
函数签名: @@ -699,35 +735,36 @@ func main() { ```go func Wrap(str string, wrapWith string) string ``` + 示例: ```go import ( - "fmt" - "github.com/duke-git/lancet/v2/strutil" + "fmt" + "github.com/duke-git/lancet/v2/strutil" ) func main() { - result1 := strutil.Wrap("foo", "") - result2 := strutil.Wrap("foo", "*") - result3 := strutil.Wrap("'foo'", "'") - result4 := strutil.Wrap("", "*") + result1 := strutil.Wrap("foo", "") + result2 := strutil.Wrap("foo", "*") + result3 := strutil.Wrap("'foo'", "'") + result4 := strutil.Wrap("", "*") - fmt.Println(result1) - fmt.Println(result2) - fmt.Println(result3) - fmt.Println(result4) - - // Output: - // foo - // *foo* - // ''foo'' - // + fmt.Println(result1) + fmt.Println(result2) + fmt.Println(result3) + fmt.Println(result4) + + // Output: + // foo + // *foo* + // ''foo'' + // } ``` - ### Wrap +用另一个字符串解开包裹一个字符串。
函数签名: @@ -735,32 +772,33 @@ func main() { ```go func Unwrap(str string, wrapToken string) string ``` + 示例: ```go import ( - "fmt" - "github.com/duke-git/lancet/v2/strutil" + "fmt" + "github.com/duke-git/lancet/v2/strutil" ) func main() { - result1 := strutil.Unwrap("foo", "") - result2 := strutil.Unwrap("*foo*", "*") - result3 := strutil.Unwrap("*foo", "*") - result4 := strutil.Unwrap("foo*", "*") - result5 := strutil.Unwrap("**foo**", "*") + result1 := strutil.Unwrap("foo", "") + result2 := strutil.Unwrap("*foo*", "*") + result3 := strutil.Unwrap("*foo", "*") + result4 := strutil.Unwrap("foo*", "*") + result5 := strutil.Unwrap("**foo**", "*") - fmt.Println(result1) - fmt.Println(result2) - fmt.Println(result3) - fmt.Println(result4) - fmt.Println(result5) + fmt.Println(result1) + fmt.Println(result2) + fmt.Println(result3) + fmt.Println(result4) + fmt.Println(result5) - // Output: - // foo - // foo - // *foo - // foo* - // *foo* + // Output: + // foo + // foo + // *foo + // foo* + // *foo* } -``` \ No newline at end of file +``` diff --git a/docs/system.md b/docs/system.md index 34f1cc1..46ed891 100644 --- a/docs/system.md +++ b/docs/system.md @@ -1,16 +1,17 @@ # System + Package system contains some functions about os, runtime, shell command. ## Source: -- [https://github.com/duke-git/lancet/blob/main/system/os.go](https://github.com/duke-git/lancet/blob/main/system/os.go) - +- [https://github.com/duke-git/lancet/blob/main/system/os.go](https://github.com/duke-git/lancet/blob/main/system/os.go) ## Usage: + ```go import ( "github.com/duke-git/lancet/v2/system" @@ -20,23 +21,23 @@ import ( ## Index -- [IsWindows](#IsWindows) -- [IsLinux](#IsLinux) -- [IsMac](#IsMac) -- [GetOsEnv](#GetOsEnv) -- [SetOsEnv](#SetOsEnv) -- [RemoveOsEnv](#RemoveOsEnv) -- [CompareOsEnv](#CompareOsEnv) -- [ExecCommand](#ExecCommand) -- [GetOsBits](#GetOsBits) - + +- [IsWindows](#IsWindows) +- [IsLinux](#IsLinux) +- [IsMac](#IsMac) +- [GetOsEnv](#GetOsEnv) +- [SetOsEnv](#SetOsEnv) +- [RemoveOsEnv](#RemoveOsEnv) +- [CompareOsEnv](#CompareOsEnv) +- [ExecCommand](#ExecCommand) +- [GetOsBits](#GetOsBits) ## Documentation - ### IsWindows +Check if current os is windows.
Signature: @@ -44,24 +45,23 @@ import ( ```go func IsWindows() bool ``` + Example: ```go import ( - "fmt" - "github.com/duke-git/lancet/v2/system" + "fmt" + "github.com/duke-git/lancet/v2/system" ) func main() { - isOsWindows := system.IsWindows() - fmt.Println(isOsWindows) + isOsWindows := system.IsWindows() + fmt.Println(isOsWindows) } ``` - - - ### IsLinux +Check if current os is linux.
Signature: @@ -69,23 +69,23 @@ func main() { ```go func IsLinux() bool ``` + Example: ```go import ( - "fmt" - "github.com/duke-git/lancet/v2/system" + "fmt" + "github.com/duke-git/lancet/v2/system" ) func main() { - isOsLinux := system.IsLinux() - fmt.Println(isOsLinux) + isOsLinux := system.IsLinux() + fmt.Println(isOsLinux) } ``` - - ### IsMac +Check if current os is macos.
Signature: @@ -93,23 +93,23 @@ func main() { ```go func IsMac() bool ``` + Example: ```go import ( - "fmt" - "github.com/duke-git/lancet/v2/system" + "fmt" + "github.com/duke-git/lancet/v2/system" ) func main() { - isOsMac := system.IsMac() - fmt.Println(isOsMac) + isOsMac := system.IsMac() + fmt.Println(isOsMac) } ``` - - ### GetOsEnv +Gets the value of the environment variable named by the key.
Signature: @@ -117,23 +117,29 @@ func main() { ```go func GetOsEnv(key string) string ``` + Example: ```go import ( - "fmt" - "github.com/duke-git/lancet/v2/system" + "fmt" + "github.com/duke-git/lancet/v2/system" ) func main() { - fooEnv := system.GetOsEnv("foo") - fmt.Println(fooEnv) + err := system.SetOsEnv("foo", "abc") + result := system.GetOsEnv("foo") + + fmt.Println(err) + fmt.Println(result) + // Output: + //Sets the value of the environment variable named by the key.
Signature: @@ -141,24 +147,29 @@ func main() { ```go func SetOsEnv(key, value string) error ``` + Example: ```go import ( - "fmt" - "github.com/duke-git/lancet/v2/system" + "fmt" + "github.com/duke-git/lancet/v2/system" ) func main() { - err := system.SetOsEnv("foo", "foo_value") - fmt.Println(err) + err := system.SetOsEnv("foo", "abc") + result := system.GetOsEnv("foo") + + fmt.Println(err) + fmt.Println(result) + // Output: + //Remove a single environment variable.
Signature: @@ -166,25 +177,37 @@ func main() { ```go func RemoveOsEnv(key string) error ``` + Example: ```go import ( - "fmt" - "github.com/duke-git/lancet/v2/system" + "fmt" + "github.com/duke-git/lancet/v2/system" ) func main() { - err := system.RemoveOsEnv("foo") - if err != nil { - fmt.Println(err) - } + err1 := system.SetOsEnv("foo", "abc") + result1 := GetOsEnv("foo") + + err2 := system.RemoveOsEnv("foo") + result2 := GetOsEnv("foo") + + fmt.Println(err1) + fmt.Println(err2) + fmt.Println(result1) + fmt.Println(result2) + + // Output: + //Get env named by the key and compare it with comparedEnv.
Signature: @@ -192,25 +215,32 @@ func main() { ```go func CompareOsEnv(key, comparedEnv string) bool ``` + Example: ```go import ( - "fmt" - "github.com/duke-git/lancet/v2/system" + "fmt" + "github.com/duke-git/lancet/v2/system" ) func main() { - system.SetOsEnv("foo", "foo_value") - res := system.CompareOsEnv("foo", "foo_value") - fmt.Println(res) //true + err := system.SetOsEnv("foo", "abc") + if err != nil { + return + } + + result := system.CompareOsEnv("foo", "abc") + + fmt.Println(result) + + // Output: + // true } ``` - - - ### CompareOsEnv +Execute shell command, return the stdout and stderr string of command, and error if error occur. param `command` is a complete command string, like, ls -a (linux), dir(windows), ping 127.0.0.1. In linux, use /bin/bash -c to execute command, In windows, use powershell.exe to execute command.
Signature: @@ -218,40 +248,39 @@ func main() { ```go func ExecCommand(command string) (stdout, stderr string, err error) ``` + Example: ```go import ( - "fmt" - "github.com/duke-git/lancet/v2/system" + "fmt" + "github.com/duke-git/lancet/v2/system" ) func main() { - // linux or mac - stdout, stderr, err := system.ExecCommand("ls") - fmt.Println("std out: ", stdout) - fmt.Println("std err: ", stderr) - assert.Equal("", stderr) + // linux or mac + stdout, stderr, err := system.ExecCommand("ls") + fmt.Println("std out: ", stdout) + fmt.Println("std err: ", stderr) + assert.Equal("", stderr) - // windows - stdout, stderr, err = system.ExecCommand("dir") - fmt.Println("std out: ", stdout) - fmt.Println("std err: ", stderr) + // windows + stdout, stderr, err = system.ExecCommand("dir") + fmt.Println("std out: ", stdout) + fmt.Println("std err: ", stderr) - // error command - stdout, stderr, err = system.ExecCommand("abc") - fmt.Println("std out: ", stdout) - fmt.Println("std err: ", stderr) - if err != nil { - fmt.Println(err.Error()) - } + // error command + stdout, stderr, err = system.ExecCommand("abc") + fmt.Println("std out: ", stdout) + fmt.Println("std err: ", stderr) + if err != nil { + fmt.Println(err.Error()) + } } ``` - - - ### GetOsBits +Get current os bits, 32bit or 64bit. return 32 or 64
Signature: @@ -259,19 +288,17 @@ func main() { ```go func GetOsBits() int ``` + Example: ```go import ( - "fmt" - "github.com/duke-git/lancet/v2/system" + "fmt" + "github.com/duke-git/lancet/v2/system" ) func main() { - osBit := system.GetOsBits() - fmt.Println(osBit) + osBit := system.GetOsBits() + fmt.Println(osBit) // 32 or 64 } ``` - - - diff --git a/docs/system_zh-CN.md b/docs/system_zh-CN.md index 9aa3a90..76e5944 100644 --- a/docs/system_zh-CN.md +++ b/docs/system_zh-CN.md @@ -1,16 +1,17 @@ # System -system包含os, runtime, shell command相关函数。 + +system 包含 os, runtime, shell command 相关函数。 ## 源码: -- [https://github.com/duke-git/lancet/blob/main/system/os.go](https://github.com/duke-git/lancet/blob/main/system/os.go) - +- [https://github.com/duke-git/lancet/blob/main/system/os.go](https://github.com/duke-git/lancet/blob/main/system/os.go) ## 用法: + ```go import ( "github.com/duke-git/lancet/v2/system" @@ -20,23 +21,23 @@ import ( ## 目录 -- [IsWindows](#IsWindows) -- [IsLinux](#IsLinux) -- [IsMac](#IsMac) -- [GetOsEnv](#GetOsEnv) -- [SetOsEnv](#SetOsEnv) -- [RemoveOsEnv](#RemoveOsEnv) -- [CompareOsEnv](#CompareOsEnv) -- [ExecCommand](#ExecCommand) -- [GetOsBits](#GetOsBits) - + +- [IsWindows](#IsWindows) +- [IsLinux](#IsLinux) +- [IsMac](#IsMac) +- [GetOsEnv](#GetOsEnv) +- [SetOsEnv](#SetOsEnv) +- [RemoveOsEnv](#RemoveOsEnv) +- [CompareOsEnv](#CompareOsEnv) +- [ExecCommand](#ExecCommand) +- [GetOsBits](#GetOsBits) -## Documentation文档 - +## Documentation 文档 ### IsWindows +检查当前操作系统是否是windows
Signature: @@ -44,24 +45,23 @@ import ( ```go func IsWindows() bool ``` + Example: ```go import ( - "fmt" - "github.com/duke-git/lancet/v2/system" + "fmt" + "github.com/duke-git/lancet/v2/system" ) func main() { - isOsWindows := system.IsWindows() - fmt.Println(isOsWindows) + isOsWindows := system.IsWindows() + fmt.Println(isOsWindows) } ``` - - - ### IsLinux +检查当前操作系统是否是linux
Signature: @@ -69,23 +69,23 @@ func main() { ```go func IsLinux() bool ``` + Example: ```go import ( - "fmt" - "github.com/duke-git/lancet/v2/system" + "fmt" + "github.com/duke-git/lancet/v2/system" ) func main() { - isOsLinux := system.IsLinux() - fmt.Println(isOsLinux) + isOsLinux := system.IsLinux() + fmt.Println(isOsLinux) } ``` - - ### IsMac +检查当前操作系统是否是macos
Signature: @@ -93,23 +93,23 @@ func main() { ```go func IsMac() bool ``` + Example: ```go import ( - "fmt" - "github.com/duke-git/lancet/v2/system" + "fmt" + "github.com/duke-git/lancet/v2/system" ) func main() { - isOsMac := system.IsMac() - fmt.Println(isOsMac) + isOsMac := system.IsMac() + fmt.Println(isOsMac) } ``` - - ### GetOsEnv +获取key命名的环境变量的值
Signature: @@ -117,23 +117,29 @@ func main() { ```go func GetOsEnv(key string) string ``` + Example: ```go import ( - "fmt" - "github.com/duke-git/lancet/v2/system" + "fmt" + "github.com/duke-git/lancet/v2/system" ) func main() { - fooEnv := system.GetOsEnv("foo") - fmt.Println(fooEnv) + err := system.SetOsEnv("foo", "abc") + result := system.GetOsEnv("foo") + + fmt.Println(err) + fmt.Println(result) + // Output: + //设置由key命名的环境变量的值
Signature: @@ -141,24 +147,29 @@ func main() { ```go func SetOsEnv(key, value string) error ``` + Example: ```go import ( - "fmt" - "github.com/duke-git/lancet/v2/system" + "fmt" + "github.com/duke-git/lancet/v2/system" ) func main() { - err := system.SetOsEnv("foo", "foo_value") - fmt.Println(err) + err := system.SetOsEnv("foo", "abc") + result := system.GetOsEnv("foo") + + fmt.Println(err) + fmt.Println(result) + // Output: + //删除单个环境变量
Signature: @@ -166,25 +177,37 @@ func main() { ```go func RemoveOsEnv(key string) error ``` + Example: ```go import ( - "fmt" - "github.com/duke-git/lancet/v2/system" + "fmt" + "github.com/duke-git/lancet/v2/system" ) func main() { - err := system.RemoveOsEnv("foo") - if err != nil { - fmt.Println(err) - } + err1 := system.SetOsEnv("foo", "abc") + result1 := GetOsEnv("foo") + + err2 := system.RemoveOsEnv("foo") + result2 := GetOsEnv("foo") + + fmt.Println(err1) + fmt.Println(err2) + fmt.Println(result1) + fmt.Println(result2) + + // Output: + //获取key命名的环境变量值并与compareEnv进行比较
Signature: @@ -192,25 +215,32 @@ func main() { ```go func CompareOsEnv(key, comparedEnv string) bool ``` + Example: ```go import ( - "fmt" - "github.com/duke-git/lancet/v2/system" + "fmt" + "github.com/duke-git/lancet/v2/system" ) func main() { - system.SetOsEnv("foo", "foo_value") - res := system.CompareOsEnv("foo", "foo_value") - fmt.Println(res) //true + err := system.SetOsEnv("foo", "abc") + if err != nil { + return + } + + result := system.CompareOsEnv("foo", "abc") + + fmt.Println(result) + + // Output: + // true } ``` - - - ### ExecCommand +执行shell命令,返回命令的stdout和stderr字符串,如果出现错误,则返回错误。参数`command`是一个完整的命令字符串,如ls-a(linux),dir(windows),ping 127.0.0.1。在linux中,使用/bin/bash-c执行命令,在windows中,使用powershell.exe执行命令。
Signature: @@ -218,40 +248,39 @@ func main() { ```go func ExecCommand(command string) (stdout, stderr string, err error) ``` + Example: ```go import ( - "fmt" - "github.com/duke-git/lancet/v2/system" + "fmt" + "github.com/duke-git/lancet/v2/system" ) func main() { - // linux or mac - stdout, stderr, err := system.ExecCommand("ls") - fmt.Println("std out: ", stdout) - fmt.Println("std err: ", stderr) - assert.Equal("", stderr) + // linux or mac + stdout, stderr, err := system.ExecCommand("ls") + fmt.Println("std out: ", stdout) + fmt.Println("std err: ", stderr) + assert.Equal("", stderr) - // windows - stdout, stderr, err = system.ExecCommand("dir") - fmt.Println("std out: ", stdout) - fmt.Println("std err: ", stderr) + // windows + stdout, stderr, err = system.ExecCommand("dir") + fmt.Println("std out: ", stdout) + fmt.Println("std err: ", stderr) - // error command - stdout, stderr, err = system.ExecCommand("abc") - fmt.Println("std out: ", stdout) - fmt.Println("std err: ", stderr) - if err != nil { - fmt.Println(err.Error()) - } + // error command + stdout, stderr, err = system.ExecCommand("abc") + fmt.Println("std out: ", stdout) + fmt.Println("std err: ", stderr) + if err != nil { + fmt.Println(err.Error()) + } } ``` - - - ### GetOsBits +获取当前操作系统位数,返回32或64
函数签名: @@ -259,23 +288,17 @@ func main() { ```go func GetOsBits() int ``` + 例子: ```go import ( - "fmt" - "github.com/duke-git/lancet/v2/system" + "fmt" + "github.com/duke-git/lancet/v2/system" ) func main() { - osBit := system.GetOsBits() - fmt.Println(osBit) + osBit := system.GetOsBits() + fmt.Println(osBit) // 32 or 64 } ``` - - - - - - - diff --git a/docs/xerror.md b/docs/xerror.md index 5de4ad8..c760bb9 100644 --- a/docs/xerror.md +++ b/docs/xerror.md @@ -1,15 +1,17 @@ # Xerror + Package xerror implements helpers for errors. ## Source: -- [https://github.com/duke-git/lancet/blob/main/xerror/xerror.go](https://github.com/duke-git/lancet/blob/main/xerror/xerror.go) +- [https://github.com/duke-git/lancet/blob/main/xerror/xerror.go](https://github.com/duke-git/lancet/blob/main/xerror/xerror.go) ## Usage: + ```go import ( "github.com/duke-git/lancet/v2/xerror" @@ -19,15 +21,15 @@ import ( ## Index -- [Unwrap](#Unwrap) + +- [Unwrap](#Unwrap) ## Documentation - - ### Unwrap +Unwrap if err is nil then it returns a valid value. If err is not nil, Unwrap panics with err.
Signature: @@ -35,6 +37,7 @@ import ( ```go func Unwrap[T any](val T, err error) T ``` + Example: ```go @@ -46,20 +49,20 @@ import ( ) func main() { - result1 := xerror.Unwrap(strconv.Atoi("42")) - fmt.Println(result1) + result1 := xerror.Unwrap(strconv.Atoi("42")) + fmt.Println(result1) - _, err := strconv.Atoi("4o2") - defer func() { - v := recover() - result2 := reflect.DeepEqual(err.Error(), v.(*strconv.NumError).Error()) - fmt.Println(result2) - }() + _, err := strconv.Atoi("4o2") + defer func() { + v := recover() + result2 := reflect.DeepEqual(err.Error(), v.(*strconv.NumError).Error()) + fmt.Println(result2) + }() - xerror.Unwrap(strconv.Atoi("4o2")) + xerror.Unwrap(strconv.Atoi("4o2")) - // Output: - // 42 - // true + // Output: + // 42 + // true } ``` diff --git a/docs/xerror_zh-CN.md b/docs/xerror_zh-CN.md index 3489cb6..bbbb0f2 100644 --- a/docs/xerror_zh-CN.md +++ b/docs/xerror_zh-CN.md @@ -1,15 +1,17 @@ # Xerror -xerror错误处理逻辑封装 + +xerror 错误处理逻辑封装 ## 源码: -- [https://github.com/duke-git/lancet/blob/main/xerror/xerror.go](https://github.com/duke-git/lancet/blob/main/xerror/xerror.go) +- [https://github.com/duke-git/lancet/blob/main/xerror/xerror.go](https://github.com/duke-git/lancet/blob/main/xerror/xerror.go) ## 用法: + ```go import ( "github.com/duke-git/lancet/v2/xerror" @@ -19,15 +21,15 @@ import ( ## 目录 -- [Unwrap](#Unwrap) + +- [Unwrap](#Unwrap) ## 文档 - - ### Unwrap +检查error, 如果err为nil则展开,则它返回一个有效值,如果err不是nil则Unwrap使用err发生panic。
函数签名: @@ -35,6 +37,7 @@ import ( ```go func Unwrap[T any](val T, err error) T ``` + 例子: ```go @@ -46,20 +49,20 @@ import ( ) func main() { - result1 := xerror.Unwrap(strconv.Atoi("42")) - fmt.Println(result1) + result1 := xerror.Unwrap(strconv.Atoi("42")) + fmt.Println(result1) - _, err := strconv.Atoi("4o2") - defer func() { - v := recover() - result2 := reflect.DeepEqual(err.Error(), v.(*strconv.NumError).Error()) - fmt.Println(result2) - }() + _, err := strconv.Atoi("4o2") + defer func() { + v := recover() + result2 := reflect.DeepEqual(err.Error(), v.(*strconv.NumError).Error()) + fmt.Println(result2) + }() - xerror.Unwrap(strconv.Atoi("4o2")) + xerror.Unwrap(strconv.Atoi("4o2")) - // Output: - // 42 - // true + // Output: + // 42 + // true } ``` diff --git a/system/os_example_test.go b/system/os_example_test.go index 164d1f8..8ab3a65 100644 --- a/system/os_example_test.go +++ b/system/os_example_test.go @@ -3,10 +3,10 @@ package system import "fmt" func ExampleSetOsEnv() { - ok := SetOsEnv("foo", "abc") + err := SetOsEnv("foo", "abc") result := GetOsEnv("foo") - fmt.Println(ok) + fmt.Println(err) fmt.Println(result) // Output: //