func Contains(s, substr string) bool, 包含
func ContainsAny(s, chars string) bool,任何字符有就是
fmt.Println(strings.ContainsAny("team", "i"))
fmt.Println(strings.ContainsAny("fail", "ui"))
fmt.Println(strings.ContainsAny("ure", "ui"))
fmt.Println(strings.ContainsAny("failure", "ui"))
fmt.Println(strings.ContainsAny("foo", ""))
fmt.Println(strings.ContainsAny("", ""))}func ContainsRune(s string, r rune) bool
// Finds whether a string contains a particular Unicode code point. // The code point for the lowercase letter "a", for example, is 97. fmt.Println(strings.ContainsRune("aardvark", 97))
fmt.Println(strings.ContainsRune("timeout", 97))func Count(s, substr string) int
func EqualFold(s, t string) bool,UTF-8,unicode case-floding equals
fmt.Println(strings.EqualFold("Go", "go"))[func Fields(s string) ]string, 根据空格分割字符串返回slice
fmt.Printf("Fields are: %q", strings.Fields(" foo bar baz "))[func FieldsFunc(s string, f func(rune) bool) ]string, 根据空格分割字符串返回slice
func main() {
f := func(c rune) bool {
return !unicode.IsLetter(c) && !unicode.IsNumber(c)
}
fmt.Printf("Fields are: %q", strings.FieldsFunc(" foo1;bar2,baz3...", f))}func HasPrefix(s, prefix string) bool,
func main() {
fmt.Println(strings.HasPrefix("Gopher", "Go"))
fmt.Println(strings.HasPrefix("Gopher", "C"))
fmt.Println(strings.HasPrefix("Gopher", ""))}func HasSuffix(s, suffix string) bool
func main() {
fmt.Println(strings.HasSuffix("Amigo", "go"))
fmt.Println(strings.HasSuffix("Amigo", "O"))
fmt.Println(strings.HasSuffix("Amigo", "Ami"))
fmt.Println(strings.HasSuffix("Amigo", ""))}fmt.Println(strings.IndexAny("chicken", "aeiouy"))
fmt.Println(strings.IndexAny("crwth", "aeiouy"))func IndexByte(s string, c byte) int
func IndexFunc(s string, f func(rune) bool) int, 第一个满足func f的rune
f := func(c rune) bool {
return unicode.Is(unicode.Han, c)
}
fmt.Println(strings.IndexFunc("Hello, 世界", f))
fmt.Println(strings.IndexFunc("Hello, world", f))}func IndexRune(s string, r rune) int
[func Join(elems ]string, sep string) string, 组合string slice到s,
s := []string{"foo", "bar", "baz"}
fmt.Println(strings.Join(s, ", "))// 省略几个 lastIndexXXX 相关的,类似IndexXXX
func Map(mapping func(rune) rune, s string) string, 把string每个字符 map func一下,如果返回负数,直接抛弃
rot13 := func(r rune) rune {
switch {
case r >= 'A' && r <= 'Z':
return 'A' + (r-'A'+13)%26
case r >= 'a' && r <= 'z':
return 'a' + (r-'a'+13)%26
}
return r
}
fmt.Println(strings.Map(rot13, "'Twas brillig and the slithy gopher..."))func Repeat(s string, count int) string, 返回新的string,n个s
func Replace(s, old, new string, n int) string, 把old换成new,换n个,n<0, 全换, 就是ReplaceAll
func ReplaceAll(s, old, new string) string
[func Split(s, sep string) ]string,切到slice,如果有没有sep,返回slice[0] = s, 如果sep ==空,返回每个字符一个位置的数组,都空,返回空数组
[func SplitAfter(s, sep string) ]string
fmt.Printf("%q\n", strings.SplitAfter("a,b,c", ",")) //["a," "b," "c"] 没看出区别split[func SplitAfterN(s, sep string, n int) ]string
fmt.Printf("%q\n", strings.SplitAfterN("a,b,c", ",", 2))//["a," "b,c"][func SplitN(s, sep string, n int) ]string
fmt.Printf("%q\n", strings.SplitN("a,b,c", ",", 2))//["a" "b,c"] z := strings.SplitN("a,b,c", ",", 0)
fmt.Printf("%q (nil = %v)\n", z, z == nil) // [] (nil = true)func Title(s string) string,返回新的string,第一个字符unicode
fmt.Println(strings.Title("her royal highness")) //Her Royal Highness fmt.Println(strings.Title("loud noises")) //Loud Noises fmt.Println(strings.Title("хлеб")) //Хлебfunc ToLower(s string) string
func ToLowerSpecial(c unicode.SpecialCase, s string) string, 根据具体的unicode 编码来lower
fmt.Println(strings.ToLowerSpecial(unicode.TurkishCase, "?nnek ??")) //?nnek i?
// 省略几个ToTitle, ToUpper 相关的,无非是首字母大写或者全大写
func Trim(s string, cutset string) string
func TrimFunc(s string, f func(rune) bool) string
fmt.Print(strings.TrimFunc("???Hello, Gophers!!!", func(r rune) bool {
return !unicode.IsLetter(r) && !unicode.IsNumber(r)
}))func TrimLeft(s string, cutset string) string
fmt.Print(strings.TrimLeft("???Hello, Gophers!!!", "!?")) //Hello, Gophers!!!func TrimPrefix(s, prefix string) string
var s = "???Hello, Gophers!!!" s = strings.TrimPrefix(s, "???Hello, ") s = strings.TrimPrefix(s, "???Howdy, ") fmt.Print(s) //Gophers!!!
// 省略几个TrimRight, TrimXXXFunc, 也是类似的操作
func TrimSpace(s string) string
fmt.Println(strings.TrimSpace(" \t\n Hello, Gophers \n\t\r\n"))func TrimSuffix(s, suffix string) string
下面的Builder, Writer, Reader, Replacer, 都是基于String对象的操作,涉及整个string的数据结构,在Go中string是一段内存空间,通过数组表示,有长度,然后Builder就有Cap,Len,Grow等操作来操作string的数组大小, 读写通过不同的interface来分开,这些interface,还能支持其他数据类型
type _string struct {
elements *byte // underlying bytes len int // number of bytes}
查看更多关于Golang String 常用中文API的详细内容...