字符串
字符串就是一串固定长度的字符连接起来的字符序列。Go的字符串是由单个字节连接起来的。Go语言的字符串的字节使用UTF-8编码标识Unicode文本
表示方式两种
- 双引号
- 反引号(原样式输出)
字符串转义符
\r | 回车符(返回下一行行首) |
---|---|
\n | 换行符(直接跳到下一行的同列位置) |
\t | 制表符(tab键的作用) |
\" | 双引号 |
\\ | 反斜杠 |
\% | % |
…
字符串的操作
len(str) | 返回字符串的长度 |
---|---|
string.Split(s,"/") | 以/分割字符串s |
string.HasPrefix(s,“haha”); string.HasSuffix(s,“haha”) | 字符串s是否是以haha开始/结尾的 |
string.Index(s,"/");string.LastIndex(s,“sfdwfwe/”) | 子串首次/最后一次出现的索引位置 |
string.Contains(s,“dfsdf”) | 字符串中是否含有 dfsdfm,返回布尔值 |
string.Join(a []string,sep string) | 字符串的拼接 |
fmt的字符串的拼接
ss :=fmt.Sprintf("%s%s",“name”,“jfvcduskhgvksu”)
fmt.Println(ss) 输出打印 // namejfvcduskhgvksu
字符串的修改
首先golang里面的字符串是不能修改的(直接对其修改),但是有办法修改
- 先转换为[] rune 或者[] byte ,修改后再转换为string类型
- 无论哪种转换,都会重新分配内存,并复制字节数组
s1 :="hdcuksaygfuisyfv"
转换为切片
s2:=[]byte(s1)
修改切片的值
s2[:]="hdfifisoagfiosgfios"
转换为字符串
s3 :=string(s2)
修改前后字符串内存地址发生改变,不是同一个字符串了
直接上代码
package main
import (
"fmt"
"strings"
)
func main() {
// 字符串的原格式输出
a1:=`斯诺克军是 大V slvjsdol;jvo;ds
你呢`
a := "kshgsfdsg dsgs dsvsdl maosnf"
// 分割
b := strings.Split(a, " ")
// 连接
c:=strings.Join(b,"*")
c2:=strings.Join(b,"\\")
c3:=strings.Join(b,`\`)
c4:=strings.Join(b,`,`)
// 是否包含
d:=strings.Contains(a,"dsvsdl")
// 是否包含前缀
e:=strings.HasPrefix(c,"kshgsfdsg")
// 是否包含后缀
f:=strings.HasSuffix(c,"maosnf")
// 子串的索引
g:=strings.Index(c,"dsgs")
// 子串最后一次的索引
h:=strings.LastIndex(c,"f")
fmt.Printf("%T, %#v \n",a,a) //string, "kshgsfdsg dsgs dsvsdl maosnf"
fmt.Printf("%T, %#v \n",b,b) //[]string, []string{"kshgsfdsg", "dsgs", "dsvsdl", "maosnf"}
fmt.Printf("%T, %#v \n",c,c) //string, "kshgsfdsg*dsgs*dsvsdl*maosnf"
fmt.Printf("%T, %#v \n",c2,c2) //string, "kshgsfdsg\\dsgs\\dsvsdl\\maosnf"
fmt.Printf("%T, %v \n",c3,c3) //string, kshgsfdsg\dsgs\dsvsdl\maosnf
fmt.Printf("%T, %#v \n",c4,c4) //string, "kshgsfdsg,dsgs,dsvsdl,maosnf"
fmt.Printf("%T, %#v \n",d,d) //bool, true
fmt.Printf("%T, %#v \n",e,e) //bool, true
fmt.Printf("%T, %#v \n",f,f) //bool, true
// 返回字符串的长度
fmt.Println(len(c)) //28
fmt.Printf("%T, %#v \n",g,g) //int, 10
fmt.Printf("%T, %#v \n",h,h) //int, 27
fmt.Printf("%T, %#v",a1,a1) //string, "斯诺克军是 大V slvjsdol;jvo;ds\n\t你呢"
}