一、strconv的学习

1.转换值添加到字符串后面

//根据 b 的值将“true”或“false”附加到 dst 并返回扩展缓冲区。
func AppendBool(dst [] byte , b bool ) [] byte//转化为float类型
func AppendFloat(dst [] byte , f float64 , fmt byte , prec, bitSize int ) [] byte//转化为int类型
func AppendInt(dst [] byte , i int64 , base int ) [] byte//AppendQuote 将表示 Quote 生成的 s 的双引号 Go 字符串文字附加到 dst 并返回扩展缓冲区。
func AppendQuote(dst [] byte , s string ) [] byte// 将表示 QuoteRune 生成的符文的单引号 Go 字符文字附加到 dst 并返回扩展缓冲区。
func AppendQuoteRune(dst [] byte , r rune ) [] byte//将表示由 QuoteRuneToASCII 生成的符文的单引号 Go 字符文字附加到 dst 并返回扩展缓冲区。
func AppendQuoteRuneToASCII(dst [] byte , r rune ) [] byte

2.类型转换

//字符串转为int
func Atoi(s string ) ( int , error )//报告字符串 s 是否可以不变地表示为单行反引号字符串,而没有除制表符以外的控制字符。
eg:
fmt.Println(strconv.CanBackquote("Fran & Freddie's Diner ☺"))
fmt.Println(strconv.CanBackquote("`can't backquote this`"))//格式化输出float64
func FormatFloat(f float64, fmt byte, prec, bitSize int) stringFormatFloat 根据格式 fmt 和 precision prec 将浮点数 f 转换为字符串。假设原始值是从 bitSize 位的浮点值(float32 为 32,float64 为 64)获得的,它对结果进行四舍五入。格式 fmt 是 'b'(-ddddp±ddd,二进制指数)、'e'(-d.dddde±dd,十进制指数)、'E'(-d.ddddE±dd,十进制指数)之一), 'f' (-ddd.dddd, 无指数), 'g' ('e' 代表大指数, 'f' 否则), 'G' ('E' 代表大指数, 'f' 否则), ' x'(-0xd.ddddp±ddd,一个十六进制小数和二进制指数),或'X'(-0Xd.ddddP±ddd,一个十六进制小数和二进制指数)。精度 prec 控制由 'e'、'E'、'f'、'g'、'G'、'x' 和 'X' 格式打印的位数(不包括指数)。对于“e”、“E”、“f”、“x”和“X”,它是小数点后的位数。对于“g”和“G”,它是有效数字的最大数量(删除尾随零)。特殊精度 -1 使用所需的最小位数,以便 ParseFloat 将准确返回 f。//int类型转换为2-36进制的
func FormatInt(i int64 , base int ) string返回给定基数中 i 的字符串表示,对于 2 <= base <= 36。结果使用小写字母 'a' 到 'z' 表示数字值 >= 10。//unit转化为2-36进制
func FormatUint(i uint64 , base int )字符串//int转换为字符串
func Itoa(i int) string//string转换为bool
func ParseBool(str string) (bool, error)//string转化为复数
func ParseComplex(s string, bitSize int) (complex128, error)//string转为浮点
func ParseFloat(s string, bitSize int) (float64, error)//string转为指定进制和精度的浮点
func ParseInt(s string, base int, bitSize int) (i int64, err error)eg:
package mainimport ("fmt""strconv"
)func main() {v32 := "-354634382"if s, err := strconv.ParseInt(v32, 10, 32); err == nil {fmt.Printf("%T, %v\n", s, s)}if s, err := strconv.ParseInt(v32, 16, 32); err == nil {fmt.Printf("%T, %v\n", s, s)}v64 := "-3546343826724305832"if s, err := strconv.ParseInt(v64, 10, 64); err == nil {fmt.Printf("%T, %v\n", s, s)}if s, err := strconv.ParseInt(v64, 16, 64); err == nil {fmt.Printf("%T, %v\n", s, s)}//string转化为指定进制和精度的uint
func ParseUint(s string, base int, bitSize int) (uint64, error)

2.strings包的学习及使用

1.比较字符串

比较返回按字典顺序比较两个字符串的整数。如果 a==b,则结果为 0,如果 a < b,则结果为 -1,如果 a > b,则结果为 +1。

func Compare(a, b string ) int

2.s是否包含字符串substr

func Contains(s, substr string) bool

3.判断char中的每一个字节是否在s内,只要有一个在则返回true

func ContainsAny(s, chars string ) boolfunc ContainsRune(s string , r rune ) bool

4.Count 计算 s 中 substr 的非重叠实例的数量。如果 substr 是空字符串,Count 返回 1 + s 中的 Unicode 代码点数。

func Count(s, substr string ) int
eg:
package mainimport ("fmt""strings"
)func main() {fmt.Println(strings.Count("cheese", "e"))fmt.Println(strings.Count("five", "")) // before & after each rune
}

5.不区分大小写是否相等

func EqualFold(s, t string ) bool

6.根据空白字符串进行切割,返回一个列表

func Fields(s string ) [] stringeg:
fmt.Printf("Fields are: %q", strings.Fields("  foo bar  baz   "))output:
Fields are:["foo" "bar" "baz"]

6.自定义切割方法,来根据指定函数切割string

func FieldsFunc(s string , f func( rune ) bool ) [] string
FieldsFunc 在每次运行满足 f(c) 的 Unicode 代码点 c 时拆分字符串 s,并返回 s 切片的数组。如果 s 中的所有代码点都满足 f(c) 或字符串为空,则返回一个空切片。eg:
f := func(c rune) bool {//unicode.IsLetter(c)是否为字母return !unicode.IsLetter(c) && !unicode.IsNumber(c)}
fmt.Printf("Fields are: %q", strings.FieldsFunc("  foo1;bar2,baz3...", f))

7.判断s是否以prefix开头

func HasPrefix(s, prefix string ) bool

8.HasSuffix 测试字符串 s 是否以后缀结尾。

func HasSuffix(s, suffix string) bool

9.Index 返回 s 中 substr 第一个实例的索引,如果 substr 不存在于 s 中,则返回 -1。

func Index(s, substr string ) int

10.返回chars串中在s匹配的第一个索引下标,如果不存在则返回-1

//会遍历所有的chars,然后返会s最小的下标索引
func IndexAny(s, chars string ) int//返回查找的字节索引
func IndexByte(s string , c byte ) int
func IndexRune(s string , r rune ) integ:
fmt.Println(strings.IndexByte("golang", 'g'))output:
0 //返回满足函数的索引,如果没有则返回-1
func IndexFunc(s string , f func( rune ) bool ) integ:
f := func(c rune) bool {return unicode.Is(unicode.Han, c)}
fmt.Println(strings.IndexFunc("Hello, 世界", f))
fmt.Println(strings.IndexFunc("Hello, world", f))output:
7
-1

11.Join连接一个elems的元素,用sep连接

func Join(elems [] string , sep string ) stringeg:s := []string{"foo", "bar", "baz"}fmt.Println(strings.Join(s, ", "))
output:foo, bar, baz

12.LastIndex 返回 s 符合substr 最后一个实例的索引,如果 substr 不存在于 s 中,则返回 -1。

func LastIndex(s, substr string ) int
func LastIndexByte(s string , c byte ) integ:fmt.Println(strings.Index("go gopher", "go"))fmt.Println(strings.LastIndex("go gopher", "go"))fmt.Println(strings.LastIndex("go gopher", "rodent"))output:0 3 -1//返回符合的任何一个char的最后一个索引,始终返回最大的
func LastIndexAny(s, chars string ) int

13.基于函数返回最后一个索引

func LastIndexFunc(s string , f func( rune ) bool ) integ:fmt.Println(strings.LastIndexFunc("go 123", unicode.IsNumber))fmt.Println(strings.LastIndexFunc("123 go", unicode.IsNumber))fmt.Println(strings.LastIndexFunc("go", unicode.IsNumber))
output: 5 2 -1

14.函数功能映射,自定义字符串转换为指定的字符串

func Map(mapping func( rune ) rune , s string ) stringeg:rot13 := func(r rune) rune {switch {case r >= 'A' && r <= 'Z':return 'A' + (r-'A'+13)%26case r >= 'a' && r <= 'z':return 'a' + (r-'a'+13)%26}return r}fmt.Println(strings.Map(rot13, "'Twas brillig and the slithy gopher..."))
output:'Gjnf oevyyvt naq gur fyvgul tbcure...

15.简短功能字符串

//重复字符串2次
strings.Repeat("na", 2)//替换字符串的某个字符
func Replace(s, old, new string , n int ) stringeg:fmt.Println(strings.Replace("oink oink oink", "k", "ky", 2))//替换所有
func ReplaceAll(s, old, new string )string
eg:fmt.Println(strings.ReplaceAll("oink oink oink", "oink", "moo"))//切割字符串
func Split(s, sep string ) [] string//切割字符串后带上切割的字符
func SplitAfter(s, sep string ) [] string//指定切割次数
func SplitAfterN(s, sep string , n int ) [] string
n > 0:最多n个子串;最后一个子串将是未拆分的余数。
n == 0:结果为零(零子串)
n < 0:所有子串
eg:fmt.Printf("%q\n", strings.SplitAfterN("a,b,c", ",", 2))
output:["a," "b,c"]//指定切割次数
func SplitN(s, sep string , n int ) [] string//返回开头字母大写的字符串
func Title(s string ) string
eg:fmt.Println(strings.Title("her royal highness"))
output:Her Royal Highness //转化为小写字母
func ToLower(s string )string//讲开头的大写字母转化为小写字母
func ToLowerSpecial(c unicode . SpecialCase , s string ) string//所有的小写字母转为大写的
func ToTitle(s string ) string//所有的转为大写的,优先考虑特殊规整的大小写
func ToTitleSpecial(c unicode . SpecialCase , s string ) string//所有的都转为大写的
func ToUpper(s string) string//根据cutset进行修剪字符串
func Trim(s, cutset string ) stringeg:fmt.Print(strings.Trim("¡¡¡Hello, Gophers!!!", "!¡s"))output:Hello, Gopher//根据函数进行修剪字符串
func TrimFunc(s string , f func( rune ) bool ) stringeg:fmt.Print(strings.TrimFunc("¡¡¡Hello, Gophers!!!", func(r rune) bool {return !unicode.IsLetter(r) && !unicode.IsNumber(r)}))
output:Hello, Gophers//根绝cutset修改删除前缀
func TrimLeft(s, cutset string ) string//根据函数修改前缀
func TrimLeftFunc(s string , f func( rune ) bool ) stringfmt.Print(strings.TrimLeftFunc("¡¡¡Hello, Gophers!!!", func(r rune) bool {return !unicode.IsLetter(r) && !unicode.IsNumber(r)}))//满足前缀则删除前缀,返回剩余字符串,不满足前缀,则返回原字符串
func TrimPrefix(s, prefix string ) string//修改后缀
func TrimRight(s, cutset string ) string//根据函数修改后缀
func TrimRightFunc(s string , f func( rune ) bool ) string//删除所有前面和后面的空格
func TrimSpace(s string ) string
eg:fmt.Println(strings.TrimSpace(" \t\n Hello, Gophers \n\t\r\n"))满足后缀则删除前缀,返回剩余字符串,不满足后缀缀,则返回原字符串
func TrimSuffix(s, suffix string ) string

16.替换器

type Replacer struct {// contains filtered or unexported fields
}r := strings.NewReplacer("<", "&lt;", ">", "&gt;")
fmt.Println(r.Replace("This is <b>HTML</b>!"))func (r *Replacer) Replace(s string) stringfunc (r * Replacer ) WriteString(w io . Writer , s string ) (n int , err error )
WriteString 将 s 写入 w 并执行所有替换。

17.类型生成器

type Builder struct {// 包含过滤或未导出的字段
}func main() {var b strings.Builderfor i := 3; i >= 1; i-- {fmt.Fprintf(&b, "%d...", i)}b.WriteString("ignition")fmt.Println(b.String())}output:3...2...1...ignition常用函数
func (b *Builder) Cap() int
func (b *Builder) Grow(n int)
func (b *Builder) Len() int
func (b *Builder) Reset()
func (b *Builder) String() string
func (b *Builder) Write(p []byte) (int, error)
func (b *Builder) WriteByte(c byte) error
func (b *Builder) WriteRune(r rune) (int, error)
func (b *Builder) WriteString(s string) (int, error)

18.类型阅读器

type Reader struct {// contains filtered or unexported fields
}func NewReader(s string) *Reader常用方法
func (r *Reader) Len() int //Len 返回字符串未读部分的字节数。
func (r *Reader) Read(b []byte) (n int, err error)
func (r *Reader) ReadAt(b []byte, off int64) (n int, err error)
func (r *Reader) ReadByte() (byte, error)
func (r *Reader) ReadRune() (ch rune, size int, err error)
func (r *Reader) Reset(s string)
func (r *Reader) Seek(offset int64, whence int) (int64, error) //Seek 实现了 io.Seeker 接口。
func (r *Reader) Size() int64
func (r *Reader) UnreadByte() error //UnreadByte 实现了 io.ByteScanner 接口。
func (r *Reader) UnreadRune() error //UnreadRune 实现了 io.RuneScanner 接口。
func (r *Reader) WriteTo(w io.Writer) (n int64, err error)//WriteTo 实现了 io.WriterTo 接口。

strconv,strings的学习(三)相关推荐

  1. 统计学习三要素 模型+策略+算法

    统计学习方法都是由模型. 策略和算法构成的. 即统计学习方法由三要素构成, 可以简单地表示为:方法=模型+策略+算法 模型 统计学习首要考虑的问题是学习什么样的模型. 在监督学习过程中, 模型就是所要 ...

  2. 深度学习三巨头也成了大眼萌,这个一键转换动画电影形象的网站竟因「太火」而下线...

    机器之心报道 作者:魔王.杜伟 想不想在动画电影中拥有自己的角色?这个网站一键满足你的需求,不过竟因流量太大成本过高而下线. 近期热映的电影<花木兰>总是让人回想起 1998 年上映的同名 ...

  3. 2020届 AAAI Fellow名单新鲜出炉!!!深度学习三巨头终于齐聚

    点击上方"深度学习技术前沿",选择"星标"公众号 资源干货,第一时间送达 AAAI 是国际人工智能领域最权威的学术组织,Fellow 是该学会给予会员的最高荣誉 ...

  4. HTTP学习三:HTTPS

    HTTP学习三:HTTPS 1 HTTP安全问题 HTTP1.0/1.1在网络中是明文传输的,因此会被黑客进行攻击. 1.1 窃取数据 因为HTTP1.0/1.1是明文的,黑客很容易获得用户的重要数据 ...

  5. python爬虫正则表达式实例-python爬虫学习三:python正则表达式

    python爬虫学习三:python正则表达式 1.正则表达式基础 a.正则表达式的大致匹配过程: 1.依次拿出表达式和文本中的字符比较 2.如果每一个字符都能匹配,则匹配成功:一旦有匹配不成功的字符 ...

  6. TweenMax动画库学习(三)

    目录               TweenMax动画库学习(一)            TweenMax动画库学习(二)            TweenMax动画库学习(三)           ...

  7. 实至名归!ACM宣布深度学习三巨头共同获得图灵奖

    昨日晚间,ACM(国际计算机学会)宣布,有"深度学习三巨头"之称的Yoshua Bengio.Yann LeCun.Geoffrey Hinton共同获得了2018年的图灵奖,这是 ...

  8. 【技术综述】图像与CNN发家简史,集齐深度学习三巨头

    文章首发于微信公众号<有三AI> [技术综述]图像与CNN发家简史,集齐深度学习三巨头 没有一个经典的发现会是突然之间横空出世,它总是需要一些积淀. 提起卷积神经网络,我们总会从LeNet ...

  9. spring security 学习三-rememberMe

    spring security 学习三-rememberMe 功能:登录时的"记住我"功能 原理: rememberMeAuthenticationFilter在security过 ...

  10. C#多线程学习(三) 生产者和消费者

    C#多线程学习(三) 生产者和消费者 原文链接:http://kb.cnblogs.com/page/42530/ 本系列文章导航 C#多线程学习(一) 多线程的相关概念 C#多线程学习(二) 如何操 ...

最新文章

  1. Docker入门系列8
  2. java 重构 if else_java中繁杂的if/else怎么重构
  3. UOJ #587. 天天和不可描述
  4. OpenStack(二)——Keystone组件
  5. 某些equipment无法顺利download到CRM的原因
  6. ASP.NET 图片剪辑控件
  7. MNS消息服务计费处理参考
  8. webpack中,css中打包背景图,路径报错
  9. log4j记录不同的日志_Spring boot中使用log4j记录日志
  10. .NET Core跨平台:.NET Core项目部署到linux(Centos7)
  11. 金山词霸没有响应, 金山词霸与卡巴冲突问题解决方法?
  12. Java开发必看!java登录界面代码
  13. 老年人、色弱者和爱操心的妈妈:视频平台技术升级的新战场
  14. json改键值大法,C# Newtonsoft.Json.Linq改字段名 增删改查 有屋设计拆单管理一体化软件 全屋定制拆单 橱柜衣柜设计拆单 整装 木门归方程序
  15. AI再造一个“李佳琦”,难嘛?
  16. 腾讯云TRTCCalling实时音视频说明文档
  17. 2021-7-20 指针:强大而危险的灵魂【C++指针的应用---中下】(炉边小坐)
  18. 数据结构(Java)-排序算法-插入排序
  19. 英文文章单词自动查找脚本
  20. OpenMV学习(0):环境搭配

热门文章

  1. ARPG、MMORPG、MOBA、卡牌类、棋盘类游戏服务器架构图
  2. 研究背调:云安全--CASB、CSPM、CWPP
  3. Mac OS Android Studio 启动模拟器失败
  4. c语言limits.h的作用,limits.h - C语言标准库
  5. 一周内,在闲鱼上被疯狂转了2万次的Redis资料!!!
  6. PS标尺参考线拖不准问题
  7. 未能加载文件或程序集“Newtonsoft.Json, Version=4.5.0.0
  8. Android视频加水印和压缩
  9. android 微信跨境支付,微信跨境支付已在超过49个境外国家和地区合规接入
  10. 目录_网易微专业C++系统工程师