Golang strings.FieldsFunc()函数进行编程示例
strings.FieldsFunc()函数 在Golang中,此函数用于在满足f(c)的Unicode代码点c的每次运行时将给定字符串str拆分,并返回str的切片数组。
语法:
func FieldsFunc(str string,f func(rune) bool) []string
在这里, str 是给定的字符串,rune是一个内置类型,用于包含单个Unicode字符,f是用户定义的函数。
返回值: 如果str中的所有代码点都满足f(c),或者字符串为空,则返回空切片。
注意: 此函数不保证调用f(c)的顺序。如果f对于给定的c不返回一致的结果,则FieldsFunc可能会崩溃。
示例1:
// Golang程序说明
// strings.FieldsFunc()函数
package main
import (
"fmt"
"strings"
"unicode"
)
func main() {
// f是一个函数,如果c为数字则返回true,否则返回false
f := func(c rune) bool {
return unicode.IsNumber(c)
}
// FieldsFunc()函数按照函数f的返回值拆分传递的字符串
// 因此,字符串在遇到数字时会被拆分,然后返回所有非数字
fmt.Printf("Fields are: %q\n",
strings.FieldsFunc("ABC123PQR456XYZ789", f))
}
输出:
Fields are: ["ABC" "PQR" "XYZ"]
示例2:
// Golang程序说明
// strings.FieldsFunc()函数
package main
import (
"fmt"
"strings"
"unicode"
)
func main() {
// f是一个函数,如果c为空格或句点则返回true,否则返回false
f := func(c rune) bool {
return unicode.IsSpace(c) || c == '.'
}
// 我们也可以间接传递一个字符串
// 遇到空格或句点时拆分字符串并返回所有非数字
s := "We are humans. We are social animals."
fmt.Printf("Fields are: %q\n", strings.FieldsFunc(s,f))
}
输出:
Fields are: ["We" "are" "humans" "We" "are" "social" "animals"]