应用下边拜访字符串

// 只有英文字符时var str stringstr = "hello"fmt.Println("s0: ", str[0], " string:", string(str[0]))// 中文字符时var str2 stringstr2 = "你好"fmt.Println("s0: ", str2[0], " string:", string(str2[0]))


因为字符串时, 能够失常输入下标对应的值, 然而中文字符串时就乱码了, 所以咱们能够应用 for range 的形式拜访;

遍历字符串

应用for range遍历string,

func main() {    str3, err := find(str2, 0)    fmt.Println("str3: ", str3, string(str3), "err: ", err)}func find(s string, index int) (rune, error) {    for i, v := range s {        if i == index {            return v, nil        }    }    return rune(0), errors.New("out of range")}

字符串拼接

对字符串进行pop操作, 应用 str[:len(str)-1], 在切片中也能够如此操作;

var str stringstr = "string"fmt.Println("源字符串: ", str)fmt.Println("拼接字符串: ", str+"p")fmt.Println("移除最初一个字符串: ", str[:len(str)-1])

查看字符串是否相等

最简略的办法是应用 < > == >= <= 等操作符实现,非常灵活。

也能够应用 strings.Compare(a, b string) 办法实现,间接应用操作符返回的是 bool 值,而 strings.Compare 返回 -1 0 1 三者之一。想到什么没有?能够应用 switch 语句,缩小大量的 if-else 语句。

func main() {    a, b := "hello", "world"    switch strings.Compare(a, b) {    case 0:        fmt.Printf("%q==%q", a, b)    case -1:        fmt.Printf("%q<%q", a, b)    case 1:        fmt.Printf("%q>%q", a, b)    }}

判断是否子串

这个问题是不是与搜寻字串及其下标很类似?

strings.Contains(s, substr string) bool

判断字符串是否蕴含某个字符集和

strings.ContainsAny(s, chars string) bool

没错,判断是否蕴含子串就是搜寻子串下标,而后判断搜寻下标是否为 -1。

参考文档:
了解go中rune数据类型
Golang 字符串操作