写点什么

Go- 字符串处理

用户头像
HelloBug
关注
发布于: 2 小时前
Go- 字符串处理

Go 学习笔记,学习内容《Go入门指南》


主要介绍以下内容:

  • 字符串前缀和后缀

    字符串包含

    字符串位置

    字符串替换

    字符串出现次数

    字符串重复

    字符串大小写转换

    字符串修剪

    字符串分割

    字符串拼接

    字符串内容读取

    字符串与其他类型转换


代码示例可以直接运行

package main
import ( "fmt" "strconv" "strings")
func main() { var s string = "I have a dream" /* 字符串前缀和后缀 */ fmt.Println(strings.HasPrefix(s, "I")) // 输出:true fmt.Println(strings.HasPrefix(s, "You")) // 输出:false
fmt.Println(strings.HasSuffix(s, "dog")) // 输出:false fmt.Println(strings.HasSuffix(s, "dream")) // 输出:true
/* 字符串包含 */ fmt.Println(strings.Contains(s, "have")) // 输出:true fmt.Println(strings.Contains(s, "has")) // 输出:false
/* 字符串位置 */ fmt.Println(strings.Index(s, "a")) // 输出:3 fmt.Println(strings.Index(s, "drea")) // 输出:9 fmt.Println(strings.Index(s, "hello")) // 输出:-1 fmt.Println(strings.LastIndex(s, "a")) // 输出:12 fmt.Println(strings.LastIndex(s, "an")) // 输出:-1 fmt.Println(strings.Index("人生自古谁无死", "谁")) // 12 //fmt.Println(strings.IndexRune("Hi There", "e")) // 编译错误: cannot use "e" (type untyped string) as type rune in argument to strings.IndexRune ?
/* 字符串替换 */ //fmt.Println(strings.Replace("you said you do not know", "you", "I")) // 编译错误:not enough arguments in call to strings.Replace fmt.Println(strings.Replace("you said you do not know", "you", "I", -1)) // 输出:I said I do not know fmt.Println(strings.Replace("you said you do not know", "you", "I", 0)) // 输出:you said you do not know fmt.Println(strings.Replace("you said you do not know", "you", "I", 1)) // 输出:I said you do not know fmt.Println(strings.Replace("you said you do not know", "you", "I", 2)) // 输出:I said I do not know fmt.Println(strings.Replace("you said you do not know", "you", "I", 3)) // 输出:I said I do not know
/* 字符串出现次数 */ fmt.Println(strings.Count("abcdefgabc", "abc")) // 输出:2 fmt.Println(strings.Count("abcdefgabc", "a")) // 输出:2 fmt.Println(strings.Count("abcdefgabc", "w")) // 输出:0
/* 字符串重复 */ fmt.Println(strings.Repeat("abc", 0)) // 输出:空字符串 fmt.Println(strings.Repeat("abc", 1)) // 输出:abc fmt.Println(strings.Repeat("abc", 3)) // 输出:abcabcabc //fmt.Println(strings.Repeat("abc", -1)) // 编译错误:panic: strings: negative Repeat count
/* 字符串大小写转换 */ fmt.Println(strings.ToLower("")) // 输出:空字符串 fmt.Println(strings.ToLower("abc")) // 输出:abc fmt.Println(strings.ToLower("ABC")) // 输出:abc fmt.Println(strings.ToLower("Abc")) // 输出:abc fmt.Println(strings.ToLower("中国")) // 输出:中国
fmt.Println(strings.ToUpper("")) // 输出:空字符串 fmt.Println(strings.ToUpper("abc")) // 输出:ABC fmt.Println(strings.ToUpper("ABC")) // 输出:ABC fmt.Println(strings.ToUpper("Abc")) // 输出:ABC fmt.Println(strings.ToUpper("中国")) // 输出:中国
/* 字符串修剪 */ fmt.Println(strings.TrimSpace(" AB C ")) // 输出:AB C-- 清除首尾空格 fmt.Println(strings.Trim("ABcdABefgAB", "AB")) // 输出:cdABefg--清除首尾指定字符串 fmt.Println(strings.TrimLeft("AbcdA", "A")) // 输出:bcdA--清除首部指定字符串 fmt.Println(strings.TrimRight("AbcdB", "B")) // 输出:Abcd--清除尾部字符串 fmt.Println(strings.TrimLeft(" AB C ", " ")) // 输出:AB C fmt.Println(strings.TrimRight(" AB C ", " ")) // 输出: AB C
/* 字符串分割 */ slice1 := strings.Fields("Marry Alice Jack Mark") // 将字符串按照空格分割 for i := 0; i < len(slice1); i++ { fmt.Printf("%s, ", slice1[i]) // 输出:Marry, Alice, Jack, Mark, } fmt.Printf("\n")
slice2 := strings.Split("Marry,Alice,Jack,Mark", ",") // 将字符串按照自定义分隔符分割 for i := 0; i < len(slice2); i++ { fmt.Printf("%s ", slice2[i]) // 输出:Marry Alice Jack Mark } fmt.Printf("\n")
/* 字符串拼接 */ fmt.Println(strings.Join(slice2, "|")) // 输出:Marry|Alice|Jack|Mark
/* 字符串内容读取 */ r := strings.NewReader("abcdefghijklmn") var buf []byte buf = make([]byte, 5) readlen, _ := r.Read(buf) // 读取字符串长度为buf长度 fmt.Println(buf, readlen) // 输出:[97 98 99 100 101] 5 b, _ := r.ReadByte() // 读取一个字符 fmt.Println(b) // 输出:102
/* 字符串与其他类型转换 1、任何类型转换为字符串都会成功 2、字符串只能转换为部分类型 */ //strconv.IntSize = 32 // 编译错误:cannot assign to strconv.IntSize (declared const) fmt.Println(strconv.IntSize) // 常量strconv.IntSize表示当前OS下 int 类型长度 fmt.Println(strconv.Itoa(61)) // 输出:字符串61
fmt.Println(strconv.FormatFloat( // 输出:字符串3.22200 3.222, // 待转换的数字 'f', // 当前数字的格式,可选:b e f g 5, // 精度,即小数点后多少位 64)) // 当前数字是float32还是float64,可选:32 64
num1, err := strconv.Atoi("H") if err != nil { // 输出:error: strconv.Atoi: parsing "H": invalid syntax fmt.Println("error: ", err) } fmt.Println(num1) // 输出:0 num2, _ := strconv.Atoi("8") fmt.Println(num2) // 输出:8
n1, _ := strconv.ParseFloat( "3.1415926", // 待转换的字符串 32) // 转换的数字类型是float32还是float64,可选:32 64 fmt.Println(n1) // 输出:3.141592502593994
n2, err := strconv.ParseFloat("hello", 64) if err != nil { // 输出:error: strconv.ParseFloat: parsing "hello": invalid syntax fmt.Println("error: ", err) } fmt.Println(n2) // 输出:0
}
复制代码


发布于: 2 小时前阅读数: 2
用户头像

HelloBug

关注

还未添加个人签名 2018.09.20 加入

还未添加个人简介

评论

发布
暂无评论
Go- 字符串处理