第五章 九析带你轻松完爆 go - 字符串操作

目录

1 前言

2 字符串操作

    2.1 字符串声明与赋值

    2.2 字符串长度

    2.3 字符串轮询

    2.4 字符串中字符替换


1 前言

        如果你对博客有任何疑问或者想更深入学习 go,请加微信群,我们一起进步:

1.jpeg


2 字符串操作

2.1 字符串声明与赋值

        字符串声明和赋值使用 := 操作符。代码如下:

package main


import "fmt"


func main() {

     s := "hello jiuxi"

     fmt.Println(s)

}

2.2 字符串长度

        获取字符串长度可以使用函数 len()。但是英文字符和中文字符 len() 的处理结果不同,英文字符长度为 1,中文字符长度为 3。代码如下:

package main


import "fmt"


func main() {

     enStr := "h"

     cnStr := "九"


     fmt.Printf("the length of enStr is: %d\n", len(enStr))

     fmt.Printf("the length of cnStr is: %d\n", len(cnStr))

}

        输出结果为:

the length of enStr is: 1

the length of cnStr is: 3

2.3 字符串轮询

        字符串常用的场景之一是轮询字符串并获取其中的字符,但是根据 2.2 所述,中英文字符 len() 值不同,因此容易导致 bug 产生,如下代码所示:

package main


import "fmt"


func main() {

     str := "hello 九析"


     for i := 0; i < len(str); i++ {

          fmt.Println(str[i])

     }

}

        本来希望打印 "hello 九析",但是实际结果却打印出乱码:image2.png

        正确使用方式如下:

package main


import "fmt"


func main() {

     str := "hello 九析"

     for _, c := range str {

          fmt.Printf("%c", c)

    }

}

2.4 字符串中字符替换

        比如想将“九析”变成“八析”该如何操作?代码如下:

package main


import "fmt"


func main() {

     srcStr := "九析"

     tar := []rune(srcStr) # 首先将字符串 strStr 进行切片,类似 java 中的 split

     tar[0] = '八' # 注意操作符是 =,而非 :=。因为 = 是赋值,而 := 是变量定义赋值

     fmt.Println(string(tar)) # 注意不能直接输出 tarStr,必须经过强制字符串转换

}

        自此,九析带你轻松完爆了基本字符串操作。

猜你喜欢

转载自blog.51cto.com/14625168/2474441