go语言中strings包的用法汇总

2020-01-28 13:24:52于丽

func main() {
 s := "Hello,世界! Hello!"
 i := strings.LastIndex(s, "h")
 fmt.Println(i) // -1
 i = strings.LastIndex(s, "H")
 fmt.Println(i) // 14
 i = strings.LastIndex(s, "")
 fmt.Println(i) // 20
}

------------------------------------------------------------

// IndexRune 返回字符 r 在字符串 s 中第一次出现的位置
// 如果找不到,则返回 -1
func IndexRune(s string, r rune) int
func main() {
 s := "Hello,世界! Hello!"
 i := strings.IndexRune(s, 'n')
 fmt.Println(i) // -1
 i = strings.IndexRune(s, '界')
 fmt.Println(i) // 9
 i = strings.IndexRune(s, 0)
 fmt.Println(i) // -1
}

------------------------------------------------------------

// IndexAny 返回字符串 chars 中的任何一个字符在字符串 s 中第一次出现的位置
// 如果找不到,则返回 -1,如果 chars 为空,则返回 -1
func IndexAny(s, chars string) int

func main() {
 s := "Hello,世界! Hello!"
 i := strings.IndexAny(s, "abc")
 fmt.Println(i) // -1
 i = strings.IndexAny(s, "dof")
 fmt.Println(i) // 1
 i = strings.IndexAny(s, "")
 fmt.Println(i) // -1
}

------------------------------------------------------------

// LastIndexAny 返回字符串 chars 中的任何一个字符在字符串 s 中最后一次出现的位置
// 如果找不到,则返回 -1,如果 chars 为空,也返回 -1
func LastIndexAny(s, chars string) int

func main() {
 s := "Hello,世界! Hello!"
 i := strings.LastIndexAny(s, "abc")
 fmt.Println(i) // -1
 i = strings.LastIndexAny(s, "def")
 fmt.Println(i) // 15
 i = strings.LastIndexAny(s, "")
 fmt.Println(i) // -1
}

------------------------------------------------------------

// SplitN 以 sep 为分隔符,将 s 切分成多个子串,结果中不包含 sep 本身
// 如果 sep 为空,则将 s 切分成 Unicode 字符列表。
// 如果 s 中没有 sep 子串,则将整个 s 作为 []string 的第一个元素返回
// 参数 n 表示最多切分出几个子串,超出的部分将不再切分。
// 如果 n 为 0,则返回 nil,如果 n 小于 0,则不限制切分个数,全部切分
func SplitN(s, sep string, n int) []string
func main() {
 s := "Hello, 世界! Hello!"
 ss := strings.SplitN(s, " ", 2)
 fmt.Printf("%qn", ss) // ["Hello," "世界! Hello!"]
 ss = strings.SplitN(s, " ", -1)
 fmt.Printf("%qn", ss) // ["Hello," "世界!" "Hello!"]
 ss = strings.SplitN(s, "", 3)
 fmt.Printf("%qn", ss) // ["H" "e" "llo, 世界! Hello!"]