1.字面量
字面量是没经过标识符封装看到的量 ,是内存中值的初始状态
var x string #x是变量
x := "1" #x是变量 ,"1"是字面量 (肉眼所见)
const x int = 10 #x是常量 ,10是字面量
2.创建字符串字面量
解释性字符串字面量双引号中写入 ,转义符可以使用 ,常见的\t \n
原始字符串使用反撇号写入 ,任何字符都是字符串
3.字符串拼接
使用缓冲区类型拼接变量效率高 ,更多操作看bytes包
1 package main 2 3 import ( 4 "bytes" 5 "fmt" 6 ) 7 8 func main() { 9 //字符串使用加号拼接效率低 10 temp := "" 11 for i:=0;i<100;i++{ 12 temp += "Zz" 13 } 14 fmt.Println(temp) 15 //使用缓冲区拼接性能提升 16 var cache bytes.Buffer //声明缓冲区 17 for i:=0;i<100;i++{ 18 cache.WriteString("Zz") //写入字符串类型 19 } 20 fmt.Println(cache.String()) //读出字符串类型 21 22 }View Code
4.字符串访问
go使用unicode字符集 ,utf-8编码方式
字符串使用索引访问得到的是对应的编码 ,可以使用%q转为字符
1 package main 2 3 import "fmt" 4 5 func main() { 6 //字符串使用加号拼接效率低 7 a := "ABCDEF" 8 fmt.Println(a[0]) //打印10进制编码 9 fmt.Printf("%q\n",a[1]) //打印编码对应的字符 10 fmt.Println(a[0:1]) //切片访问的是字符 11 }View Code
5.字符串操作
更多参考标准库的strings包 (返回新的字符串,bool值)
1)判断字符串是否以XX开头 , 是否以XX结尾
1 package main 2 3 import ( 4 "fmt" 5 "strings" 6 ) 7 8 func main() { 9 a := "ABCDEF" 10 fmt.Println(strings.HasPrefix(a, "A")) 11 fmt.Println(strings.HasSuffix(a, "A")) 12 }View Code
2)判断字符串是否包含子串 ,或某个元素
1 package main 2 3 import ( 4 "fmt" 5 "strings" 6 ) 7 8 func main() { 9 a := "ABCDEF" 10 fmt.Println(strings.Contains(a,"A")) 11 fmt.Println(strings.Contains(a,"BCD")) 12 }View Code
3)统一字符串大小写
1 package main 2 3 import ( 4 "fmt" 5 "strings" 6 ) 7 8 func main() { 9 a := "ABcdeF" 10 fmt.Println(strings.ToUpper(a)) 11 fmt.Println(strings.ToLower(a)) 12 }View Code
4)字符串翻倍
1 package main 2 3 import ( 4 "fmt" 5 "strings" 6 ) 7 8 func main() { 9 a := "AB" 10 fmt.Println(strings.Repeat(a,3)) 11 }View Code
5)字符串替换
1 package main 2 3 import ( 4 "fmt" 5 "strings" 6 ) 7 8 func main() { 9 a := "ABCDEFACF" 10 fmt.Println(strings.Replace(a,"A","Z",1)) 11 fmt.Println(strings.ReplaceAll(a,"A","Z")) 12 }View Code
6)字符串去空白
1 package main 2 3 import ( 4 "fmt" 5 "strings" 6 ) 7 8 func main() { 9 a := " Top is theshy 666 " 10 fmt.Println(a) 11 fmt.Println(strings.TrimSpace(a)) 12 }View Code
7)字符串分割 ,放入切片中
1 package main 2 3 import ( 4 "fmt" 5 "reflect" 6 "strings" 7 ) 8 9 func main() { 10 a := "AB,CD,EF,ACF" 11 slice1 := strings.Split(a,",") 12 fmt.Println(len(slice1)) 13 fmt.Println(reflect.TypeOf(slice1)) 14 }View Code
8)将可迭代元素拼接为字符串 ,使用指定符号分割
1 package main 2 3 import ( 4 "fmt" 5 "strings" 6 ) 7 8 func main() { 9 a := "AB,CD,EF,ACF" 10 slice1 := strings.Split(a,",") 11 b := strings.Join(slice1,"+") 12 fmt.Println(b) 13 }View Code
9)查找是否包含子串 ,返回-1为不包含
1 package main 2 3 import ( 4 "fmt" 5 "strings" 6 ) 7 8 func main() { 9 str1:= "hello my name is quguanwen" 10 fmt.Println(strings.Index(str1,"quguanwen")) 11 fmt.Println(strings.Contains(str1,"quguanwen")) 12 }View Code