Go语言字符串查找
Go语言中常用的字符串查找方法如下表所示。
接下来通过一个案例演示部分查找字符串处理函数的使用,代码如下所示。
声明:《Go系列教程》为本站“54笨鸟”官方原创,由国家机构和地方版权局所签发的权威证书所保护。
| 方法 | 功能描述 |
|---|---|
| func Contains(s, substr string) bool | 判断字符串 s 是否包含 substr 字符串 |
| func ContainsAny(s, chars string) bool | 判断字符串 s 是否包含 chars 字符串中的任一字符 |
| func ContainsRune(s string, r rune) bool | 判断字符串 s 是否包含 unicode 码值 r |
| func Count(s, sep string) int | 返回字符串 s 包含字符串 sep 的个数 |
| func HasPrefix(s, prefix string) bool | 判断字符串 s 是否有前缀字符串 prefix |
| func HasSuffix(s, suffix string) bool | 判断字符串 s 是否有后缀字符串 suffix |
| func Index(s, sep string) int | 返回字符串 s 中字符串 sep 首次出现的位置 |
| func IndexAny(s, chars string) int | 返回字符串 chars 中的任意一个 unicode 码值在 s 中首次出现的位置 |
| func IndexByte(s string, c byte) int | 返回字符串 s 中字符 c 首次出现的位置 |
| func IndexFunc(s string, f func(rune) bool) int | 返回字符串 s 中满足函数 f(r)==true 字符首次出现的位置 |
| func IndexRune(s string, r rune) int | 返回 unicode 码值 r 在字符串中首次出现的位置 |
| func LastIndex(s, sep string) int | 返回字符串 s 中字符串 sep 最后一次出现的位置 |
| func LastIndexAny(s, chars string) int | 返回字符串 chars 中的任意一个 unicode 码值在 s 中最后一次出现的位置 |
| func LastIndexByte(s string, c byte) int | 返回字符串 s 中字符 c 最后一次出现的位置 |
| func LastIndexFunc(s string, f func(rune) bool) int | 返回字符串 s 中满足函数 f(r)==true 字符最后一次出现的位置 |
接下来通过一个案例演示部分查找字符串处理函数的使用,代码如下所示。
package main
import(
"fmt"
"strings"
"unicode"
)
func main(){
TestContains()
TestCount()
TestIndex()
TestIndexFunc()
TestLastIndex()
TestLastIndexFunc()
res := GetFileSuffix("abc.xyz.1mn.jpg")
fmt.Println(res)
}
//判断是否包含子串
func TestContains(){
fmt.Println(strings.Contains("seafood", "foo"))
fmt.Println(strings.Contains("seafood", "bar"))
fmt.Println(strings.Contains("seafood", ""))
fmt.Println(strings.Contains("", ""))
fmt.Println(strings.Contains("steven王2008", "王"))
}
//判断字符串是否包含另一字符串中的任一字符
func TestContainsAny(){
fmt.Println(strings.ContainsAny("team", "i"))
fmt.Println(strings.ContainsAny("failure", "u & i"))
fmt.Println(strings.ContainsAny("foo", ""))
fmt.Println(strings.ContainsAny("", ""))
}
//判断字符串是否包含unicode码值
func TestContainsRune(){
fmt.Println(strings.ContainsRune("一丁", '丁'))
fmt.Println(strings.ContainsRune("一丁", 19969))
}
//返回字符串包含另一字符串的个数
func TestCount(){
fmt.Println(strings.Count("cheese", "e"))
fmt.Println(strings.Count("one", ""))
}
//判断字符串 s 是否有前缀字符串
func TestHasPrefix(){
fmt.Println(strings.HasPrefix("1000phone news", "1000"))
fmt.Println(strings.HasPrefix("1000phone news", "1000a"))
}
//判断字符串是否有后缀字符串
func TestHasSuffix(){
fmt.Println(strings.HasSuffix("1000phone news", "news"))
fmt.Println(strings.HasSuffix("1000phone news", "new"))
}
//返回字符串中另一字符串首次出现的位置
func TestIndex(){
fmt.Println(strings.Index("chicken", "ken"))
fmt.Println(strings.Index("chicken", "dmr"))
}
//返回字符串中的任一unicode码值首次出现的位置
func TestIndexAny(){
fmt.Println(strings.IndexAny("abcABC120", "教育基地A"))
}
//返回字符串中字符首次出现位置
func TestIndexByte(){
fmt.Println(strings.IndexByte("123abc", 'a'))
}
//判断字符串是否包含unicode码值
func TestIndexRune(){
fmt.Println(strings.IndexRune("abcABC120", 'C'))
fmt.Println(strings.IndexRune("It培训教育", '教'))
}
//返回字符串中满足函数 f(r)==true 字符首次出现的位置
func TestIndexFunc(){
f := func(c rune) bool{
return unicode.Is(unicode.Han, c)
}
fmt.Println(strings.IndexFunc("Hello123, 中国", f))
}
//返回字符串中子串最后一次出现的位置
func TestLastIndex(){
fmt.Println(strings.LastIndex("Steven learn english", "e"))
fmt.Println(strings.Index("go gopher", "go"))
fmt.Println(strings.LastIndex("go gopher", "go"))
fmt.Println(strings.LastIndex("go gopher", "rodent"))
}
//返回字符串中任意一个unicode码值最后一次出现的位置
func TestLastIndexAny(){
fmt.Println(strings.LastIndexAny("chicken", "aeiouy"))
fmt.Println(strings.LastIndexAny("crwth", "aeiouy"))
}
//返回字符串中字符最后一次出现的位置
func TestLastIndexByte(){
fmt.Println(strings.LastIndexByte("abcABCA123", 'A'))
}
//返回字符串中满足函数 f(r)==true 字符最后一次出现的位置
func TestLastIndexFunc(){
f := func(c rune) bool{
return unicode.Is(unicode.Han, c)
}
fmt.Println(strings.LastIndexFunc("Hello, 世界", f))
fmt.Println(strings.LastIndexFunc("Hello, world中国人", f))
}
//获取文件后缀
func GetFileSuffix(str string) string{
arr := strings.Split(str, ".")
return arr[len(arr)-1]
}
运行结果如下:
true
false
true
true
true
3
4
4
-1
10
13
0
3
-1
10
18
jpg
声明:《Go系列教程》为本站“54笨鸟”官方原创,由国家机构和地方版权局所签发的权威证书所保护。