go中的字符串

字符串

字符串就是一串固定长度的字符连接起来的字符序列。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你呢"


}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值