=Start=
缘由:
最近在跟着郝林老师的《Go语言核心36讲》这门课程重拾Go语言学习(之前在15年的时候我自学过一段时间,不过后来没怎么用Go来写代码,所以有些内容都忘了,这次希望能坚持下去),所以准备把一些常见功能用Go语言试着实践一遍,加强学习效果和对这门语言的感觉。
正文:
参考解答:
不论是哪门语言,在实际应用编码过程中,字符串操作应该是绕不过去的一类基础操作,而且会占很大一部分比例,所以,这次在学习过程中也尝试对一些常规的字符串操作进行整理,方便以后参考。
为了减少文章篇幅,同时不影响理解,先在这里说明一下演示代码的大体结构:
package main import ( "fmt" "strings" ) func learn_str_operation() { // put verify code here } func main() { learn_str_operation() }
如何获取字符串长度?——用内建的 len() 函数。
str_in := "count=1000] uid=123456]" // 字符串要用「双引号」包裹起来 fmt.Printf("the length of 'str_in': %d\n", len(str_in)) // 23
循环打印(for..range语法)
str_in := "count=1000] uid=123456]" // 字符串要用「双引号」包裹起来 // 用for循环打印出字符串的内容 for idx, value := range str_in { fmt.Printf("idx: %d, value: %q\n", idx, value) }
子串截取
str_in := "count=1000] uid=123456]" // 字符串要用「双引号」包裹起来 str_temp := str_in[:5] // 截取前5个字符,用的是slice切片操作 fmt.Printf("the first 5 charters of 'str_in': %q\n", str_temp) // count
字符串查找
- func Contains(s, substr string) bool
- func ContainsAny(s, chars string) bool //参数chars中有没有任何一个字符在字符串s中,有即返回true
// 字符串查找 fmt.Println(strings.Contains("hello world", "hello")) // true fmt.Println(strings.Contains("goodbye", "good")) // true fmt.Println(strings.Contains("good", "goodbye")) // false fmt.Println(strings.ContainsAny("team", "i")) // false fmt.Println(strings.ContainsAny("failure", "u & i")) // true fmt.Println(strings.ContainsAny("failure", "u & x")) // true fmt.Println(strings.ContainsAny("failure", "u | x")) // true fmt.Println(strings.ContainsAny("failure", "x & y")) // false
字符串拼接
- func Join(a []string, sep string) string
s := []string{"foo", "bar", "baz"} fmt.Printf("value: %q\n", s) // ["foo" "bar" "baz"] fmt.Printf("value: %q\n", strings.Join(s, ",")) // "foo,bar,baz"
字符串替换
- func Replace(s, old, new string, n int) string
fmt.Println(strings.Replace("link link link", "k", "es", 2)) // lines lines link fmt.Println(strings.Replace("link link link", "link", "moo", -1)) // moo moo moo
按特定字符串进行切分
- func Split(s, sep string) []string
- func SplitN(s, sep string, n int) []string
fmt.Printf("value: %q\n", strings.Split("a,b,c", ",")) // ["a" "b" "c"] fmt.Printf("value: %q\n", strings.Split("a man a plan a canal panama", "a ")) // ["" "man " "plan " "canal panama"] fmt.Printf("value: %q\n", strings.Split(" xyz ", "")) // [" " "x" "y" "z" " "] fmt.Printf("value: %q\n", strings.Split("", "test")) // [""] fmt.Printf("%q\n", strings.SplitN("a,b,c", ",", 1)) // ["a,b,c"] fmt.Printf("%q\n", strings.SplitN("a,b,c", ",", 2)) // ["a" "b,c"] z := strings.SplitN("a,b,c", ",", 0) // 当最后一个参数为0时,表示返回 nil fmt.Printf("%q (nil = %v)\n", z, z == nil) // [] (nil = true)
固定长度的随机字符串生成
- 参考「用Go生成指定长度的随机字符串」。
参考链接:
- golang中字符串的查找方法小结
https://www.cnblogs.com/unqiang/p/6682281.html - 本地用命令
godoc -http=:8080
搭建的文档查询页
http://localhost:8080/pkg/strings/#pkg-examples - 用Go生成指定长度的随机字符串
https://ixyzero.com/blog/archives/2535.html
=END=
《 “Go语言学习#1-字符串操作” 》 有 2 条评论
Go 语言中如何将 整型 转换成 字符串
https://stackoverflow.com/questions/10105935/how-to-convert-an-int-value-to-string-in-go
`
t1 = strconv.Itoa(123)
t2 = strconv.FormatInt(int64(123), 10)
t3 = fmt.Sprintf(“%v”, 123)
`
Go 语言中如何将 字符串 转换成 整型
https://stackoverflow.com/questions/4278430/convert-string-to-integer-type-in-go
`
i, err = strconv.Atoi(s)
i2, err := strconv.ParseInt(s, 10, 64) // i2是int64类型
_, err = fmt.Sscan(s, &i)
`
Golang 新手可能会踩的 50 个坑
https://lvtao.net/golang/2116.html
http://devs.cloudimmunity.com/gotchas-and-common-mistakes-in-go-golang/
https://github.com/wuYin/blog/blob/master/50-shades-of-golang-traps-gotchas-mistakes.md