字符串常用函数

  1. 字符串查找 strings.Contains()

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    import (
    "fmt"
    "strings"
    )

    func main() {
    s := "hello world"
    fmt.Println(strings.Contains(s, "hello"), strings.Contains(s, "?"))
    }

    // true false
  1. 字符串下标 strings.Index()

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    import (
    "fmt"
    "strings"
    )

    func main() {
    s := "hello world"
    fmt.Println(strings.Index(s, "o"))
    }

    // 4
  2. 字符串分割 strings.Split()

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    import (
    "fmt"
    "string"
    )

    func main() {
    ss := "1#2#34#567"
    fmt.Println(strings.Split(ss, "#"))
    }

    // [1 2 34 567]
  3. 字符串合并 strings.join()

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    import (
    "fmt"
    "strings"
    )

    func main() {
    ss := "1#2#34#567"

    splitStr := strings.Split(ss, "#")

    fmt.Println(strings.Join(splitStr, "%"))
    }

    // 1%2%34%567
  4. 判断前缀、后缀 strings.HasPrefix() strings.HasSuffix()

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    import (
    "fmt"
    "strings"
    )

    func main() {
    s := "hello world"
    fmt.Println(strings.HasPrefix(s, "he"))
    fmt.Println(strings.HasSuffix(s, "ld"))
    }

    // true true
  5. 字符串转换

    1. 整型转字符串型 strconv.Itoa()
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      import (
      "fmt"
      "reflect"
      "strconv"
      )

      func main() {
      i := 100
      s := strconv.Itoa(i)
      fmt.Println(s, reflect.TypeOf(s))
      }

      // 100 string
    2. 字符串型转整型 strconv.Atoi()
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      import (
      "fmt"
      "reflect"
      "strconv"
      )

      func main() {
      i := "100"
      s, err := strconv.Atoi(i)
      fmt.Println(s, reflect.TypeOf(s), err)
      }

      // 100 int <nil>
  6. 字符串解析、格式化

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    import (
    "fmt"
    "reflect"
    "strconv"
    )

    func main() {

    // 解析
    fmt.Println(strconv.ParseBool("false"))
    fmt.Println(strconv.ParseFloat("3.14", 64))

    // 格式化
    fmt.Println(strconv.FormatBool(true), reflect.TypeOf(strconv.FormatBool(true)))
    fmt.Println(strconv.FormatInt(123, 2), reflect.TypeOf(strconv.FormatInt(123, 2)))
    }

    以上输入:

    1
    2
    3
    4
    false <nil>
    3.14 <nil>
    true string
    1111011 string

结构体序列化和反序列化

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
import (
"encoding/xml"
"fmt"
)

// Person 结构体
type Person struct {
Name string `xml:"name,attr"`
Age int
}

func main() {
p := Person{Name: "David", Age: 18}
var person []byte
var err error

// 序列化
if person, err = xml.MarshalIndent(p,"", " "); err != nil {
fmt.Println(err)
return
}

fmt.Println(string(person))

// 反序列化
var f = new(Person)
if err = xml.Unmarshal(person, f); err != nil {
fmt.Println(err)
return
}

fmt.Println(f)
}

以上输出结果为:

1
2
3
4
5
<Person>
<name>David</name>
<Age>18</Age>
</Person>
&{David 18}