go语言字符串学习笔记

字符串(string)

1.1 什么是字符串

golang中的字符串实际上是一个字节的切片,可以将启内容封装在“”来创建字符串。

go中的字符串是Unicode兼容,编码为UTF-8

1.2 字符串的使用

基本介绍:

语法: “”, ``, "a", "abc", "三"

字符:对应编码表中的编码值。

A->65, B->66...

字符串是字节的集合。

字符串不可修改。

声明字符串:

	var str string = `12`
	str2 := "abc"
	str3 := ""
	fmt.Printf("str1 : %s, str2:%s, str3:%s", str, str2, str3)

结果如下:

str1 : 12, str2:abc, str3:

获取字符串长度

len(str)

遍历字符串

	str2 := "abcd"

	for _, v := range str2 {
		fmt.Printf("%c, ", v)
	}

a, b, c, d,

字符串不可修改

	str2 := "abcd"
	str2[0] = "0"
	fmt.Println(str2)

会报以下错误

cannot assign to str2[0]

1.3 string 常用函数

关于string的api可以查询官方网站,国内无法FQ可以访问http://docscn.studygolang.com/pkg/strings/

Compare

func Compare(a, b string) int

Compare 用来比较两个字符串,如果内容相等则返回0, 如果a>b则返回1, 如果a<b则返回-1

Contaons

func Contains(s, substr string) bool

是否包含制定字符串s

fmt.Println(strings.Contains("seafood", "foo")) //true
fmt.Println(strings.Contains("seafood", "bar")) //false
fmt.Println(strings.Contains("seafood", "")) // true
fmt.Println(strings.Contains("", "")) //true

ContainsAny

func ContainsAny(s, chars string) bool

是否包含chars 任意一个字符即可。

代码:

fmt.Println(strings.ContainsAny("team", "i")) //false
fmt.Println(strings.ContainsAny("failure", "u & i")) //true
fmt.Println(strings.ContainsAny("foo", "")) //false
fmt.Println(strings.ContainsAny("", "")) // false

Count

func Count(s, sep string) int

统计字符sep在s中出现的次数

fmt.Println(strings.Count("cheese", "e")) //3
fmt.Println(strings.Count("five", "")) // before & after each rune // 5

Index

func Index(s, sep string) int

查找sep在s中的位置

fmt.Println(strings.Index("chicken", "ken")) //4
fmt.Println(strings.Index("chicken", "dmr")) //-1

HasPrefix

func HasPrefix(s, prefix string) bool

判断s是否以prefix开头

fmt.Println(strings.HasPrefix("abcd", "a")) //true

IndexAny

func IndexAny(s, chars string) int

查找任意chars中任意一个在s中的位置

fmt.Println(strings.IndexAny("chicken", "aeiouy")) //2
fmt.Println(strings.IndexAny("crwth", "aeiouy")) //-1

Join

func Join(a []string, sep string) string

字符串拼接

s := []string{"foo", "bar", "baz"}
fmt.Println(strings.Join(s, ", "))
输出:foo, bar, baz

Split

func Split(s, sep string) []string

字符串切割

fmt.Printf("%q\n", strings.Split("a,b,c", ","))
fmt.Printf("%q\n", strings.Split("a man a plan a canal panama", "a "))
fmt.Printf("%q\n", strings.Split(" xyz ", ""))
fmt.Printf("%q\n", strings.Split("", "Bernardo O'Higgins"))

输出:

["a" "b" "c"]
["" "man " "plan " "canal panama"]
[" " "x" "y" "z" " "]
[""]

ToLower & ToUpper

大小写转换

fmt.Println(strings.ToLower("Gopher"))//gopher
fmt.Println(strings.ToUpper("Gopher")) //GOPHER

1.4 string 与其他类型的转换

bool类型转换

s := "true"
b1, err := strconv.ParseBool(s)
if err != nil {
	fmt.Println(err)
}
fmt.Println(b1)

输出:

true

如果字符串s不是true或者false呢?

s := "tru1e"
b1, err := strconv.ParseBool(s)
if err != nil {
	fmt.Println(err)
}
fmt.Println(b1)

输出:

strconv.ParseBool: parsing "tru2e": invalid syntax

false

string转换整数类型

s := "100"
i1, err := strconv.ParseInt(s, 2, 64) //二进制,64位bitSize,正常用10进制
if err != nil {
	fmt.Println(err)
	return
}
fmt.Println(i1)

输出:

4

整数转换为string

str2 := strconv.FormatInt(100, 10)
fmt.Println(str2) // "100"

posted on 2020-03-05 21:56  长方形  阅读(141)  评论(0编辑  收藏  举报

导航