Go语言学习#1-字符串操作

本文最后更新于2018年10月21日,已超过 1 年没有更新,如果文章内容失效,还请反馈给我,谢谢!

=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)
固定长度的随机字符串生成

 

参考链接:

=END=

声明: 除非注明,ixyzero.com文章均为原创,转载请以链接形式标明本文地址,谢谢!
https://ixyzero.com/blog/archives/4126.html

2 thoughts on “Go语言学习#1-字符串操作”

  1. 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)
    `

发表评论

电子邮件地址不会被公开。 必填项已用*标注