package main
import (
"fmt"
"strings"
)
func main() {
// Contain(s,str string) bool, 查找子串是否在指定的字符串中
fmt.Println(strings.Contains("TigerwolfC", "wolf")) //true
fmt.Println(strings.Contains("TigerwolfC", "bar")) //false
fmt.Println(strings.Contains("TigerwolfC", "")) //true
fmt.Println(strings.Contains("", "")) //true 这里要特别注意
fmt.Println(strings.Contains("我是中国人", "我")) //true
// ContainsAny(s, chars string) bool, 判断字符串 s 中是否包含 chars 中的任何一个字符,如果有返回 true,否则返回false
str := "Hello World"
fmt.Println(strings.ContainsAny(str, "W")) // true
fmt.Println(strings.ContainsAny("foo", "")) // false
fmt.Println(strings.ContainsAny(str, "def")) // true
fmt.Println(strings.ContainsAny("", "")) // false
// Count(s, sep string) int, 判断字符 sep 在字符串 s 总共出现的次数,如果不存在返回0; 注意字串不能为空, 为空返回结果不符合预期
str = "Hello World"
fmt.Println(strings.Count(str, "")) //程序输出 12
fmt.Println(strings.Count(str, "llo")) //程序输出 1, 子串"llo"在字符串中出现1次
fmt.Println(strings.Count(str, "l")) //程序输出 3
fmt.Println(strings.Count(str, "p")) //程序输出 0
// EqualFold(s, t string) bool, 判断字符串 s 是否与字符串 t 相等,并且不区分大小写
str = "Hello World"
fmt.Println(strings.EqualFold(str, "hello world")) //程序输出 true
fmt.Println(strings.EqualFold(str, "hello worl")) //程序输出 false
// Fields(s string) []string, 将字符串 s 以空格为分隔符拆分成若干个字符串,若成功则返回分割后的字符串切片
str = "Hello World hello golang"
for _, v := range strings.Fields(str) {
fmt.Println(v)
}
// HasPrefix(s, prefix string) bool, 判断字符串 s 是否是以字符 prefix 开头,如果是返回 true 否则返回 false
str = "Hello World"
fmt.Println(strings.HasPrefix(str, "He")) //程序输出 true
fmt.Println(strings.HasPrefix(str, "Hex")) //程序输出 true
// HasSuffix(s, suffix string) bool, 判断字符串 s 是否是以字符 suffix 结束,如果是返回 true 否则返回 false
str = "Hello World"
fmt.Println(strings.HasSuffix(str, "orld")) //程序输出 true
fmt.Println(strings.HasSuffix(str, "world")) //程序输出 false
// Index(s, sep string) int,判断字符 sep 在字符串 s 中第一次出现的位置,如果成功则返回sep位置的索引,如果字符 sep 不在字符串 s 中则返回 -1
str = "Hello World"
fmt.Println(strings.Index(str, "e")) //程序输出 1
fmt.Println(strings.Index(str, "c")) //程序输出 -1
fmt.Println(strings.Index(str, "llo")) //程序输出 2
// func LastIndex(s, sep string) int, 返回子串 sep 在字符串 s 中最后一次出现的位置,如果找不到,则返回 -1,如果 sep 为空,则返回字符串的长度
str = "Hello World"
fmt.Println(strings.LastIndex(str, "h")) //程序输出 -1
fmt.Println(strings.LastIndex(str, "o")) //程序输出 7
fmt.Println(strings.LastIndex(str, "")) //程序输出 11
// func IndexAny(s, chars string) int, 返回字符串 chars 中的任何一个字符在字符串 s 中第一次出现的位置, 如果找不到,则返回 -1,如果 chars 为空,则返回 -1
str = "Hello World"
fmt.Println(strings.IndexAny(str, "abc")) //程序输出 -1
fmt.Println(strings.IndexAny(str, "dof")) //程序输出 4
fmt.Println(strings.IndexAny(str, "")) //程序输出 -1
// func Join(a []string, sep string) string, Join 将 a 中的子串连接成一个单独的字符串,子串之间用 sep 分隔
strSlice := []string{"foo", "baa", "bae"}
fmt.Println(strings.Join(strSlice, ", ")) // 返回字符串:foo, baa, bae
fmt.Println(strings.Join(strSlice, "")) // 返回字符串:foo, baa, bae
// func Repeat(s string, count int) string, 将 count 个字符串 s 连接成一个新的字符串
str = "Good!"
fmt.Println(strings.Repeat(str, 3)) // "Good!Good!Good!"
// func ToUpper(s string) string, 将 s 中的所有字符修改为其大写格式,对于非 ASCII 字符,它的大写格式需要查表转换
// func ToLower(s string) string, 将 s 中的所有字符修改为其小写格式,对于非 ASCII 字符,它的小写格式需要查表转换
// func ToTitle(s string) string, ToTitle 将 s 中的所有字符修改为其 Title 格式,大部分字符的 Title 格式就是其 Upper 格式,只有少数字符的 Title 格式是特殊字符
// 这里的 ToTitle 主要给 Title 函数调用
str = "heLLo worLd Abc"
fmt.Println(strings.ToUpper(str)) // "HELLO WORLD ABC"
fmt.Println(strings.ToLower(str)) // "hello world abc"
fmt.Println(strings.ToTitle(str)) // "HELLO WORLD ABC"
// func Trim(s string, cutset string) string, 将删除 s 首尾连续的包含在 cutset 中的字符
// func TrimLeft(s string, cutset string) string, TrimLeft 将删除 s 头部连续的包含在 cutset 中的字符
// func TrimRight(s string, cutset string) string, TrimRight 将删除 s 尾部连续的包含在 cutset 中的字符
str = " Hello 世界! "
ts := strings.Trim(str, " Helo!")
fmt.Printf("%q\n", ts) // "世界"
fmt.Printf("[%q]\n", strings.Trim(" !!! Achtung !!! ", "! ")) // ["Achtung"]
tr := strings.TrimLeft(str, " Helo")
fmt.Printf("%q\n", tr) // "世界! "
tx := strings.TrimRight(str, " 世界!")
fmt.Printf("%q\n", tx) // " Hello"
// func TrimPrefix(s, prefix string) string, TrimPrefix 删除 s 头部的 prefix 字符串,如果 s 不是以 prefix 开头,则返回原始 s
str = "@Hello@世界!"
ts = strings.TrimPrefix(str, "@")
fmt.Printf("%q\n", ts) // " Hello@世界!"
tx = strings.TrimPrefix(str, "$")
fmt.Printf("%q\n", tx) // " @Hello@世界!"
// func TrimSuffix(s, suffix string) string, TrimSuffix 删除 s 尾部的 suffix 字符串,如果 s 不是以 suffix 结尾,则返回原始 s
str = "Hello 世界!!!!!"
ts = strings.TrimSuffix(str, "!!!!")
fmt.Printf("%q\n", ts) // "Hello 世界!"
// func Replace(s, old, new string, n int) string, Replace 返回 s 的副本,并将副本中的 old 字符串替换为 new 字符串替换次数为 n 次
// 如果 n 为 -1,则全部替换,如果 old 为空,则在副本的每个字符之间都插入一个 new
fmt.Println(strings.Replace("ABAACEDF", "A", "a", 2)) // aBaACEDF
fmt.Println(strings.Replace("ABAACEDF", "A", "a", -1)) // aBaaCEDF
fmt.Println(strings.Replace("", "A", "a", -1)) // aBaaCEDF
}