*这里主要介绍一些字符串的符号表示以及注意事项,毕竟和python差不多
一、解释字符串
\a 响铃
\b 退格
\f 换页
\n 换行
\r 回车
\t 制表符
\u Unicode字符
\v 纵向制表符
\' 单引号
\" 双引号
\\ 反斜杠
注意:
1.python下三引号是可以跨行,Go里面,反单引号跨行
2.对字符串做遍历的时候,用len是无法完全遍历的,因为每个字符可能由多个字节组成
二、字符串修改
方式:一般将字符串的内容复制到另一个可写的变量,然后再修改。一般使用[]byte(对字符串的字节修改时转),[]rune(对字符串的字符修改时转),转换后自动复制数据。
e.g: s:="Hello 世界!"
b:=[]byte(s)
b[5]=","==>修改后s不会发生变化, b修改
e.g: s:="Hello 世界!"
b:=[]rune(s)
b[6]="中"==>修改后s不会发生变化, b修改
**注意:不允许获取字符串中的某字节的地址==》&str[i]
三、几种点出来strings的方法
str:="This is an example of a string"
1)fmt.printf("%t\n",strings.HasPrefix(str,"Th"))==>返回bool值, 判断是否以Th开头
fmt.printf("%t\n",strings.HasSuffix(str,"string"))==>返回bool值, 判断是否以string结尾
2)fmt.printf("%t\n",strings.Contains(str,"XXX"))==>返回bool值, 判断是否包含XXX
fmt.printf("Does the string\"%s\"have prefix %s?\n",str,"Th")==>返回bool值, 判断是否以string结尾
3)fmt.printf(strings.index(str,"T"))==>返回0,返回指定字符串的位置
fmt.printf(strings.LastIndex(str,"T"))==>返回指定字符串最后一个字符出现位置的索引,-1表示不包含特定字符串
fmt.printf(strings.IndexRune(str, '界'))==>返回"界"在字符串str中的位置, 用于非ASCII码字符
4)fmt.print(strings.Replace(原字符串,需要被替换的字符串,要换成的新字符串, 匹配到第几个结束替换))
**注意:
1. replace里,-1表示全部替换
2. str.ContainsAny(str,chars)甚至可以匹配到Unicode字符串
3. len([]rune(str))==utf8.RuneCountInString(str)
5)fmt.printf(strings.Count(str,"a"))==>判断字符串中a的数量
6)fmt.printf(strings.Trim(str,"Th"))==>替换str内指定的字符串
fmt.printf(strings.TrimLeft(str,"Th"))==>将字符串最前面的空格修整掉。当在没有参数的情况下调用时,TrimLeft删除换行符,空格和tab字符
fmt.printf(strings.TrimRight(str,"Th"))==>消除从右侧起所遇到的所有空格字符
fmt.printf(strings.TrimSpace(str))==>去掉字符串两端的空格
**注意:
Trim只针对开头或结尾的字符,书写时可以填写其他位置字符,但不会替换
7)fmt.printf(strings.Split("a,b,c",","))==>["a""b""c"]
8)str1:=strings.Fields(str)==>把str字符串转成字符串切片
strings.Join(str1,";")==>因为字符串不能修改,所以常转换为切片,这里是转换为切片后对单个字符之间添加分号分割
四、strconv包(用于字符串和其他类型转换)
1)数字类型转换到字符串
strconv.FormatFloat(f float64, fmt byte,prec int,bitSize int)string==>将64位浮点型数字转字符串
strconv.Itoa(f float64, fmt byte,prec int,bitSize int)string==>将十进制数转字符串
**fmt表示格式(值可以是'b','e,''f','g'), prec表示精度, bitSize值32和64表示float32和float64
2)字符串转数字
num,err:=strconv.Atoi(str)
if err!=nil{
t.Fatal("")
return
}