了解标准库是一个非常好的学习语言的方法。接下里的一些章节我们将详细研究标准库中的类型,方法,结合实际应用案例进行有趣的编程。
字符串处理是比较基础的库,我们从简单的库开始入门。
本节我们将继续用实例代码研究以下函数的用法。
func Index(s, substr string) int
返回substr在s中首次出现的位置,不存在时返回-1
package main
import (
"fmt"
"strings"
)
func main() {
fmt.Println(strings.Index("chicken", "ken")) // 4
fmt.Println(strings.Index("chicken", "dmr")) // -1
}
func IndexAny(s, chars string) int
返回chars中任意一个首次出现在s的字母位置
package main
import (
"fmt"
"strings"
)
func main() {
fmt.Println(strings.IndexAny("chicken", "aeiouy")) // 2
fmt.Println(strings.IndexAny("crwth", "aeiouy")) // -1
}
func IndexByte(s string, c byte) int
返回c出现在s中首次出现的位置,不存在时-1
package main
import (
"fmt"
"strings"
)
func main() {
fmt.Println(strings.IndexByte("golang", 'g')) // 0
fmt.Println(strings.IndexByte("gophers", 'h')) // 3
fmt.Println(strings.IndexByte("golang", 'x')) // -1
}
func IndexFunc(s string, f func(rune) bool) int
返回s中首次满足函数f的字母位置,不存在则-1
package main
import (
"fmt"
"strings"
"unicode"
)
func main() {
f := func(c rune) bool {
return unicode.Is(unicode.Han, c)
}
fmt.Println(strings.IndexFunc("Hello, 世界", f)) // 7
fmt.Println(strings.IndexFunc("Hello, world", f)) // -1
}
func IndexRune(s string, r rune) int
返回r在s中首次出现的位置,不存在则-1
package main
import (
"fmt"
"strings"
)
func main() {
fmt.Println(strings.IndexRune("chicken", 'k')) // 4
fmt.Println(strings.IndexRune("chicken", 'd')) // -1
}
func LastIndex(s, substr string) int
substr在s中最后一次出现的位置,不存在则-1
package main
import (
"fmt"
"strings"
)
func main() {
fmt.Println(strings.Index("go gopher", "go")) // 0
fmt.Println(strings.LastIndex("go gopher", "go")) // 3
fmt.Println(strings.LastIndex("go gopher", "rodent")) // -1
}
func LastIndexAny(s, chars string) int
返回chars中任意一个最后出现在s的字母位置,不存在则-1
package main
import (
"fmt"
"strings"
)
func main() {
fmt.Println(strings.LastIndexAny("go gopher", "go")) // 4
fmt.Println(strings.LastIndexAny("go gopher", "rodent")) // 8
fmt.Println(strings.LastIndexAny("go gopher", "fail")) // -1
}
func LastIndexByte(s string, c byte) int
返回c之后出现在s的字母位置,不存在则-1
package main
import (
"fmt"
"strings"
)
func main() {
fmt.Println(strings.LastIndexByte("Hello, world", 'l')) // 10
fmt.Println(strings.LastIndexByte("Hello, world", 'o')) // 8
fmt.Println(strings.LastIndexByte("Hello, world", 'x')) // -1
}
func LastIndexFunc(s string, f func(rune) bool) int
返回s中最后满足函数f的字母位置
package main
import (
"fmt"
"strings"
"unicode"
)
func main() {
fmt.Println(strings.LastIndexFunc("go 123", unicode.IsNumber)) // 5
fmt.Println(strings.LastIndexFunc("123 go", unicode.IsNumber)) // 2
fmt.Println(strings.LastIndexFunc("go", unicode.IsNumber)) // -1
}