golang-字符串

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

猜你喜欢

转载自www.cnblogs.com/quguanwen/p/11754615.html