Documentation
¶
Overview ¶
Package strutil implements some functions to manipulate string.
Index ¶
- Variables
- func After(s, char string) string
- func AfterLast(s, char string) string
- func Before(s, char string) string
- func BeforeLast(s, char string) string
- func BytesToString(bytes []byte) string
- func CamelCase(s string) string
- func Capitalize(s string) string
- func ContainsAll(str string, substrs []string) bool
- func ContainsAny(str string, substrs []string) bool
- func HasPrefixAny(str string, prefixes []string) bool
- func HasSuffixAny(str string, suffixes []string) bool
- func HideString(origin string, start, end int, replaceChar string) string
- func IndexOffset(str string, substr string, idxFrom int) int
- func IsBlank(str string) bool
- func IsNotBlank(str string) bool
- func IsString(v any) bool
- func KebabCase(s string) string
- func LowerFirst(s string) string
- func Pad(source string, size int, padStr string) string
- func PadEnd(source string, size int, padStr string) string
- func PadStart(source string, size int, padStr string) string
- func RemoveNonPrintable(str string) string
- func RemoveWhiteSpace(str string, repalceAll bool) string
- func ReplaceWithMap(str string, replaces map[string]string) string
- func Reverse(s string) string
- func SnakeCase(s string) string
- func SplitAndTrim(str, delimiter string, characterMask ...string) []string
- func SplitEx(s, sep string, removeEmptyString bool) []string
- func SplitWords(s string) []string
- func StringToBytes(str string) (b []byte)
- func Substring(s string, offset int, length uint) string
- func Trim(str string, characterMask ...string) string
- func Unwrap(str string, wrapToken string) string
- func UpperFirst(s string) string
- func UpperKebabCase(s string) string
- func UpperSnakeCase(s string) string
- func WordCount(s string) int
- func Wrap(str string, wrapWith string) string
Examples ¶
- After
- AfterLast
- Before
- BeforeLast
- BytesToString
- CamelCase
- Capitalize
- ContainsAll
- ContainsAny
- HasPrefixAny
- HasSuffixAny
- HideString
- IndexOffset
- IsBlank
- IsNotBlank
- IsString
- KebabCase
- LowerFirst
- Pad
- PadEnd
- PadStart
- RemoveNonPrintable
- RemoveWhiteSpace
- ReplaceWithMap
- Reverse
- SnakeCase
- SplitAndTrim
- SplitEx
- SplitWords
- StringToBytes
- Substring
- Trim
- Unwrap
- UpperFirst
- UpperKebabCase
- UpperSnakeCase
- WordCount
- Wrap
Constants ¶
This section is empty.
Variables ¶
var ( // DefaultTrimChars are the characters which are stripped by Trim* functions in default. DefaultTrimChars = string([]byte{ '\t', '\v', '\n', '\r', '\f', ' ', 0x00, 0x85, 0xA0, }) )
Functions ¶
func After ¶
After returns the substring after the first occurrence of a specified string in the source string. Play: https://go.dev/play/p/RbCOQqCDA7m
Example ¶
result1 := After("foo", "")
result2 := After("foo", "foo")
result3 := After("foo/bar", "foo")
result4 := After("foo/bar", "/")
result5 := After("foo/bar/baz", "/")
fmt.Println(result1)
fmt.Println(result2)
fmt.Println(result3)
fmt.Println(result4)
fmt.Println(result5)
Output: foo /bar bar bar/baz
func AfterLast ¶
AfterLast returns the substring after the last occurrence of a specified string in the source string. Play: https://go.dev/play/p/1TegARrb8Yn
Example ¶
result1 := AfterLast("foo", "")
result2 := AfterLast("foo", "foo")
result3 := AfterLast("foo/bar", "/")
result4 := AfterLast("foo/bar/baz", "/")
result5 := AfterLast("foo/bar/foo/baz", "foo")
fmt.Println(result1)
fmt.Println(result2)
fmt.Println(result3)
fmt.Println(result4)
fmt.Println(result5)
Output: foo bar baz /baz
func Before ¶
Before returns the substring of the source string up to the first occurrence of the specified string. Play: https://go.dev/play/p/JAWTZDS4F5w
Example ¶
result1 := Before("foo", "")
result2 := Before("foo", "foo")
result3 := Before("foo/bar", "/")
result4 := Before("foo/bar/baz", "/")
fmt.Println(result1)
fmt.Println(result2)
fmt.Println(result3)
fmt.Println(result4)
Output: foo foo foo
func BeforeLast ¶
BeforeLast returns the substring of the source string up to the last occurrence of the specified string. Play: https://go.dev/play/p/pJfXXAoG_Te
Example ¶
result1 := BeforeLast("foo", "")
result2 := BeforeLast("foo", "foo")
result3 := BeforeLast("foo/bar", "/")
result4 := BeforeLast("foo/bar/baz", "/")
fmt.Println(result1)
fmt.Println(result2)
fmt.Println(result3)
fmt.Println(result4)
Output: foo foo foo/bar
func BytesToString ¶ added in v2.1.20
BytesToString converts a byte slice to string without a memory allocation. Play: https://go.dev/play/p/6c68HRvJecH
Example ¶
bytes := []byte{'a', 'b', 'c'}
result := BytesToString(bytes)
fmt.Println(result)
Output: abc
func CamelCase ¶
CamelCase coverts string to camelCase string. Non letters and numbers will be ignored. Play: https://go.dev/play/p/9eXP3tn2tUy
Example ¶
strings := []string{"", "foobar", "&FOO:BAR$BAZ", "$foo%", "Foo-#1😄$_%^&*(1bar"}
for _, v := range strings {
s := CamelCase(v)
fmt.Println(s)
}
Output: foobar fooBarBaz foo foo11Bar
func Capitalize ¶
Capitalize converts the first character of a string to upper case and the remaining to lower case. Play: https://go.dev/play/p/2OAjgbmAqHZ
Example ¶
strings := []string{"", "Foo", "_foo", "fooBar", "foo-bar"}
for _, v := range strings {
s := Capitalize(v)
fmt.Println(s)
}
Output: Foo _foo Foobar Foo-bar
func ContainsAll ¶ added in v2.2.1
ContainsAll return true if target string contains all the substrs. Play: https://go.dev/play/p/KECtK2Os4zq
Example ¶
str := "hello world"
result1 := ContainsAll(str, []string{"hello", "world"})
result2 := ContainsAll(str, []string{"hello", "abc"})
fmt.Println(result1)
fmt.Println(result2)
Output: true false
func ContainsAny ¶ added in v2.2.1
ContainsAny return true if target string contains any one of the substrs. Play: https://go.dev/play/p/dZGSSMB3LXE
Example ¶
str := "hello world"
result1 := ContainsAny(str, []string{"hello", "world"})
result2 := ContainsAny(str, []string{"hello", "abc"})
result3 := ContainsAny(str, []string{"123", "abc"})
fmt.Println(result1)
fmt.Println(result2)
fmt.Println(result3)
Output: true true false
func HasPrefixAny ¶ added in v2.1.20
HasPrefixAny check if a string starts with any of a slice of specified strings. Play: https://go.dev/play/p/8UUTl2C5slo
Example ¶
result1 := HasPrefixAny("foo bar", []string{"fo", "xyz", "hello"})
result2 := HasPrefixAny("foo bar", []string{"oom", "world"})
fmt.Println(result1)
fmt.Println(result2)
Output: true false
func HasSuffixAny ¶ added in v2.1.20
HasSuffixAny check if a string ends with any of a slice of specified strings. Play: https://go.dev/play/p/sKWpCQdOVkx
Example ¶
result1 := HasSuffixAny("foo bar", []string{"bar", "xyz", "hello"})
result2 := HasSuffixAny("foo bar", []string{"oom", "world"})
fmt.Println(result1)
fmt.Println(result2)
Output: true false
func HideString ¶ added in v2.2.1
HideString hide some chars in source string with param `replaceChar`. replace range is origin[start : end]. [start, end) Play: https://go.dev/play/p/pzbaIVCTreZ)
Example ¶
str := "13242658976" result1 := HideString(str, 3, 3, "*") result2 := HideString(str, 3, 4, "*") result3 := HideString(str, 3, 7, "*") result4 := HideString(str, 7, 11, "*") fmt.Println(result1) fmt.Println(result2) fmt.Println(result3) fmt.Println(result4)
Output: 13242658976 132*2658976 132****8976 1324265****
func IndexOffset ¶ added in v2.1.20
IndexOffset returns the index of the first instance of substr in string after offsetting the string by `idxFrom`, or -1 if substr is not present in string. Play: https://go.dev/play/p/qZo4lV2fomB
Example ¶
str := "foo bar hello world" result1 := IndexOffset(str, "o", 5) result2 := IndexOffset(str, "o", 0) result3 := IndexOffset(str, "d", len(str)-1) result4 := IndexOffset(str, "d", len(str)) result5 := IndexOffset(str, "f", -1) fmt.Println(result1) fmt.Println(result2) fmt.Println(result3) fmt.Println(result4) fmt.Println(result5)
Output: 12 1 18 -1 -1
func IsBlank ¶ added in v2.1.20
IsBlank checks if a string is whitespace, empty. Play: https://go.dev/play/p/6zXRH_c0Qd3
Example ¶
result1 := IsBlank("")
result2 := IsBlank("\t\v\f\n")
result3 := IsBlank(" 中文")
fmt.Println(result1)
fmt.Println(result2)
fmt.Println(result3)
Output: true true false
func IsNotBlank ¶ added in v2.2.7
IsNotBlank checks if a string is not whitespace, not empty.
Example ¶
result1 := IsNotBlank("")
result2 := IsNotBlank(" ")
result3 := IsNotBlank("\t\v\f\n")
result4 := IsNotBlank(" 中文")
result5 := IsNotBlank(" world ")
fmt.Println(result1)
fmt.Println(result2)
fmt.Println(result3)
fmt.Println(result4)
fmt.Println(result5)
Output: false false false true true
func IsString ¶
IsString check if the value data type is string or not. Play: https://go.dev/play/p/IOgq7oF9ERm
Example ¶
result1 := IsString("")
result2 := IsString("a")
result3 := IsString(1)
result4 := IsString(true)
result5 := IsString([]string{"a"})
fmt.Println(result1)
fmt.Println(result2)
fmt.Println(result3)
fmt.Println(result4)
fmt.Println(result5)
Output: true true false false false
func KebabCase ¶
KebabCase coverts string to kebab-case, non letters and numbers will be ignored. Play: https://go.dev/play/p/dcZM9Oahw-Y
Example ¶
strings := []string{"", "foo-bar", "Foo Bar-", "FOOBAR", "Foo-#1😄$_%^&*(1bar"}
for _, v := range strings {
s := KebabCase(v)
fmt.Println(s)
}
Output: foo-bar foo-bar foobar foo-1-1-bar
func LowerFirst ¶
LowerFirst converts the first character of string to lower case. Play: https://go.dev/play/p/CbzAyZmtJwL
Example ¶
strings := []string{"", "bar", "BAr", "Bar大"}
for _, v := range strings {
s := LowerFirst(v)
fmt.Println(s)
}
Output: bar bAr bar大
func Pad ¶ added in v2.1.16
PadStart pads string on the left and right side if it's shorter than size. Padding characters are truncated if they exceed size. Play: https://go.dev/play/p/NzImQq-VF8q
Example ¶
result1 := Pad("foo", 1, "bar")
result2 := Pad("foo", 2, "bar")
result3 := Pad("foo", 3, "bar")
result4 := Pad("foo", 4, "bar")
result5 := Pad("foo", 5, "bar")
result6 := Pad("foo", 6, "bar")
result7 := Pad("foo", 7, "bar")
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 bfoob bfooba bafooba
func PadEnd ¶
PadEnd pads string on the right side if it's shorter than size. Padding characters are truncated if they exceed size. Play: https://go.dev/play/p/9xP8rN0vz--
Example ¶
result1 := PadEnd("foo", 1, "bar")
result2 := PadEnd("foo", 2, "bar")
result3 := PadEnd("foo", 3, "bar")
result4 := PadEnd("foo", 4, "bar")
result5 := PadEnd("foo", 5, "bar")
result6 := PadEnd("foo", 6, "bar")
result7 := 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)
Output: foo foo foo foob fooba foobar foobarb
func PadStart ¶
PadStart pads string on the left side if it's shorter than size. Padding characters are truncated if they exceed size. Play: https://go.dev/play/p/xpTfzArDfvT
Example ¶
result1 := PadStart("foo", 1, "bar")
result2 := PadStart("foo", 2, "bar")
result3 := PadStart("foo", 3, "bar")
result4 := PadStart("foo", 4, "bar")
result5 := PadStart("foo", 5, "bar")
result6 := PadStart("foo", 6, "bar")
result7 := 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)
Output: foo foo foo bfoo bafoo barfoo barbfoo
func RemoveNonPrintable ¶ added in v2.1.18
RemoveNonPrintable remove non-printable characters from a string. Play: https://go.dev/play/p/og47F5x_jTZ
Example ¶
result1 := RemoveNonPrintable("hello\u00a0 \u200bworld\n")
result2 := RemoveNonPrintable("你好😄")
fmt.Println(result1)
fmt.Println(result2)
Output: hello world 你好😄
func RemoveWhiteSpace ¶ added in v2.2.2
RemoveWhiteSpace remove whitespace characters from a string. when set repalceAll is true removes all whitespace, false only replaces consecutive whitespace characters with one space. Play: https://go.dev/play/p/HzLC9vsTwkf
Example ¶
str := " hello \r\n \t world" result1 := RemoveWhiteSpace(str, true) result2 := RemoveWhiteSpace(str, false) fmt.Println(result1) fmt.Println(result2)
Output: helloworld hello world
func ReplaceWithMap ¶ added in v2.2.0
ReplaceWithMap returns a copy of `str`, which is replaced by a map in unordered way, case-sensitively. Play: https://go.dev/play/p/h3t7CNj2Vvu
Example ¶
str := "ac ab ab ac"
replaces := map[string]string{
"a": "1",
"b": "2",
}
result := ReplaceWithMap(str, replaces)
fmt.Println(result)
Output: 1c 12 12 1c
func Reverse ¶ added in v2.1.5
Reverse returns string whose char order is reversed to the given string. Play: https://go.dev/play/p/adfwalJiecD
Example ¶
s := "foo" rs := Reverse(s) fmt.Println(s) fmt.Println(rs)
Output: foo oof
func SnakeCase ¶
SnakeCase coverts string to snake_case, non letters and numbers will be ignored Play: https://go.dev/play/p/tgzQG11qBuN
Example ¶
strings := []string{"", "foo-bar", "Foo Bar-", "FOOBAR", "Foo-#1😄$_%^&*(1bar"}
for _, v := range strings {
s := SnakeCase(v)
fmt.Println(s)
}
Output: foo_bar foo_bar foobar foo_1_1_bar
func SplitAndTrim ¶ added in v2.2.0
SplitAndTrim splits string `str` by a string `delimiter` to a slice, and calls Trim to every element of this slice. It ignores the elements which are empty after Trim. Play: https://go.dev/play/p/ZNL6o4SkYQ7
Example ¶
str := " a,b, c,d,$1 " result1 := SplitAndTrim(str, ",") result2 := SplitAndTrim(str, ",", "$") fmt.Println(result1) fmt.Println(result2)
Output: [a b c d $1] [a b c d 1]
func SplitEx ¶ added in v2.0.6
SplitEx split a given string which can control the result slice contains empty string or not. Play: https://go.dev/play/p/Us-ySSbWh-3
Example ¶
result1 := SplitEx(" a b c ", "", true)
result2 := SplitEx(" a b c ", " ", false)
result3 := SplitEx(" a b c ", " ", true)
result4 := SplitEx("a = b = c = ", " = ", false)
result5 := SplitEx("a = b = c = ", " = ", true)
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 ] [a b c]
func SplitWords ¶ added in v2.1.16
SplitWords splits a string into words, word only contains alphabetic characters. Play: https://go.dev/play/p/KLiX4WiysMM
Example ¶
result1 := SplitWords("a word")
result2 := SplitWords("I'am a programmer")
result3 := SplitWords("a -b-c' 'd'e")
result4 := SplitWords("你好,我是一名码农")
result5 := SplitWords("こんにちは,私はプログラマーです")
fmt.Println(result1)
fmt.Println(result2)
fmt.Println(result3)
fmt.Println(result4)
fmt.Println(result5)
Output: [a word] [I'am a programmer] [a b-c' d'e] [] []
func StringToBytes ¶ added in v2.1.20
StringToBytes converts a string to byte slice without a memory allocation. Play: https://go.dev/play/p/7OyFBrf9AxA
Example ¶
result1 := StringToBytes("abc")
result2 := reflect.DeepEqual(result1, []byte{'a', 'b', 'c'})
fmt.Println(result1)
fmt.Println(result2)
Output: [97 98 99] true
func Substring ¶ added in v2.1.13
Substring returns a substring of the specified length starting at the specified offset position. Play: https://go.dev/play/p/q3sM6ehnPDp
Example ¶
result1 := Substring("abcde", 1, 3)
result2 := Substring("abcde", 1, 5)
result3 := Substring("abcde", -1, 3)
result4 := Substring("abcde", -2, 2)
result5 := Substring("abcde", -2, 3)
result6 := Substring("你好,欢迎你", 0, 2)
fmt.Println(result1)
fmt.Println(result2)
fmt.Println(result3)
fmt.Println(result4)
fmt.Println(result5)
fmt.Println(result6)
Output: bcd bcde e de de 你好
func Trim ¶ added in v2.2.0
Trim strips whitespace (or other characters) from the beginning and end of a string. The optional parameter `characterMask` specifies the additional stripped characters. Play: https://go.dev/play/p/Y0ilP0NRV3j
Example ¶
result1 := Trim("\nabcd")
str := "$ ab cd $ "
result2 := Trim(str)
result3 := Trim(str, "$")
fmt.Println(result1)
fmt.Println(result2)
fmt.Println(result3)
Output: abcd $ ab cd $ ab cd
func Unwrap ¶
Unwrap a given string from anther string. will change source string. Play: https://go.dev/play/p/Ec2q4BzCpG-
Example ¶
result1 := Unwrap("foo", "")
result2 := Unwrap("*foo*", "*")
result3 := Unwrap("*foo", "*")
result4 := Unwrap("foo*", "*")
result5 := Unwrap("**foo**", "*")
fmt.Println(result1)
fmt.Println(result2)
fmt.Println(result3)
fmt.Println(result4)
fmt.Println(result5)
Output: foo foo *foo foo* *foo*
func UpperFirst ¶
UpperFirst converts the first character of string to upper case. Play: https://go.dev/play/p/sBbBxRbs8MM
Example ¶
strings := []string{"", "bar", "BAr", "bar大"}
for _, v := range strings {
s := UpperFirst(v)
fmt.Println(s)
}
Output: Bar BAr Bar大
func UpperKebabCase ¶ added in v2.1.12
UpperKebabCase coverts string to upper KEBAB-CASE, non letters and numbers will be ignored Play: https://go.dev/play/p/zDyKNneyQXk
Example ¶
strings := []string{"", "foo-bar", "Foo Bar-", "FooBAR", "Foo-#1😄$_%^&*(1bar"}
for _, v := range strings {
s := UpperKebabCase(v)
fmt.Println(s)
}
Output: FOO-BAR FOO-BAR FOO-BAR FOO-1-1-BAR
func UpperSnakeCase ¶ added in v2.1.12
UpperSnakeCase coverts string to upper SNAKE_CASE, non letters and numbers will be ignored Play: https://go.dev/play/p/4COPHpnLx38
Example ¶
strings := []string{"", "foo-bar", "Foo Bar-", "FooBAR", "Foo-#1😄$_%^&*(1bar"}
for _, v := range strings {
s := UpperSnakeCase(v)
fmt.Println(s)
}
Output: FOO_BAR FOO_BAR FOO_BAR FOO_1_1_BAR
func WordCount ¶ added in v2.1.16
WordCount return the number of meaningful word, word only contains alphabetic characters. Play: https://go.dev/play/p/bj7_odx3vRf
Example ¶
result1 := WordCount("a word")
result2 := WordCount("I'am a programmer")
result3 := WordCount("a -b-c' 'd'e")
result4 := WordCount("你好,我是一名码农")
result5 := WordCount("こんにちは,私はプログラマーです")
fmt.Println(result1)
fmt.Println(result2)
fmt.Println(result3)
fmt.Println(result4)
fmt.Println(result5)
Output: 2 3 3 0 0
func Wrap ¶
Wrap a string with given string. Play: https://go.dev/play/p/KoZOlZDDt9y
Example ¶
result1 := Wrap("foo", "")
result2 := Wrap("foo", "*")
result3 := Wrap("'foo'", "'")
result4 := Wrap("", "*")
fmt.Println(result1)
fmt.Println(result2)
fmt.Println(result3)
fmt.Println(result4)
Output: foo *foo* ''foo''
Types ¶
This section is empty.