• golang-字符串


    1.字面量

      字面量是没经过标识符封装看到的量 ,是内存中值的初始状态

      var x string    #x是变量

      x := "1"      #x是变量 ,"1"是字面量 (肉眼所见)

      const x int = 10   #x是常量 ,10是字面量

    2.创建字符串字面量

      解释性字符串字面量双引号中写入 ,转义符可以使用 ,常见的

      原始字符串使用反撇号写入 ,任何字符都是字符串

    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
    ",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
  • 相关阅读:
    bzoj 1858 线段树
    bzoj 1877 最小费用流
    bzoj 1833 数位dp
    Codeforces Round #285 (Div. 1) B
    HDU2028 Lowest Common Multiple Plus
    HDU5706 GirlCat
    HDU2022 海选女主角
    687E: TOF
    687D: Dividing Kingdom II
    687D: Dividing Kingdom II
  • 原文地址:https://www.cnblogs.com/quguanwen/p/11754615.html
Copyright © 2020-2023  润新知