go基础之字符串操作

字符串
Go语言中的字符串以原生数据类型出现,使用字符串就像使用其他原生数据类型一样,go语言字符串的内部实现用utf-8编码,字符串的值为双引号””中的内容,可以在go语言的源码中直接添加非ASCII码字符
字符串的转义
\r 回车 \n 换行 \t 制表符 \’ 单引号 \” 双引号 \ 反斜杠
多行字符串
Go语言中要定一个多行字符串时,要用反引号``

package main

import "fmt"
func main() {
    s := `
        君不见
        黄河之水天上来
        奔流到海不复回
    `
    fmt.Print(s)
}

字符串常见的操作

package main

import (
    "fmt"
    "strings"
)
func main() {
    s := "sdfasdfa"
    //求长度
    fmt.Println(len(s)) //8
    //拼接字符串
    ss := s + "sdfasdf"
    fmt.Println(ss)
    fmt.Sprintln(s, ss) //sdfasdfasdfasdf
    //以什么什么字符分割,
    arr := strings.Split(ss, "a")
    fmt.Printf("%v\n", arr) //[sdf sdf sdf sdf]
    //判断是否包含
    b := strings.Contains(ss, "sdf")
    fmt.Printf("%T--%v\n", b, b) //bool--true
    //判断以什么什么开头
    b1 := strings.HasPrefix(ss, "sdf")
    fmt.Printf("%T--%v\n", b1, b1) //bool--true
    //判断以什么什么结尾
    b2 := strings.HasSuffix(ss, "sdf")
    fmt.Printf("%T--%v\n", b2, b2) //bool--true
    //子串出现的位置
    i := strings.Index(ss, "a")
    fmt.Printf("%T--%v\n", i, i) //int--3
    //join操作
    s1 := strings.Join(arr, "00")
    fmt.Printf("%T--%v\n", s1, s1) //string--sdf00sdf00sdf00sdf
}

byte和rune类型
组成字符串的每一个元素叫做字符,通过遍历或者单个获取字符串元素获得字符。
Go语言的字符有以下两种,

package main

import (
    "fmt"
)
func main() {
s := "sdfasdfa" 
//遍历字符串
    for _, sss := range s {
        fmt.Print(string(sss))
    }
}

uint8类型,也叫byte代表ASCII的一个字符
int32类型,也叫rune代表一个UTF-8字符
当需要处理中文,日文等复合字符时,则需要rune类型,rune类型实际上是int32
Go使用了特殊的类型处理Unicode,让其基于Unicode的文本处理更为方便,可以用byte进行默认字符串处理,性能和扩展性都有照顾
修改字符串
要修改字符串,需要先将其转换成[]rune或者[]byte,完成后再换成string,无论哪种转换,都重新分配内存,并复制字节数组

package main

import (
    "fmt"
)
func main() {
    s := "sdfasdfa"
    ss := []rune(s)
    ss[4] = '董'
    fmt.Println(string(ss))
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值