GO语言-05常用包:字符串

简介: 自己学习Go语言学习过程中的记录与总结,希望对你能有帮助。第五篇:学习Go语言的常用包:strings
初心是记录和总结,自己学习Go语言的历程。如果能帮助到你,这是我的荣幸。

strings

strings包,用于字符串查找、替换、比较等

有关查找

方法:strings.Contains() - 是否包含sub字符串。

语法:strings.Contains(s string, substr string)

该方法的含义是:查找 s中是否包含 substr这个字符串。

image.png

  • 方法返回值:bool
  • 如果s包含substr,则返回true
  • 字符串默认是包含""空字符串的

示例:

// 定义一个字符串:chengyunlai
str := "chengyunlai"

println(strings.Contains(str, "cheng")) //true
println(strings.Contains(str, "")) //true
println(strings.Contains(str, "x")) //false

方法:strings.Index() - 返回找到的索引

语法:strings.Index(s string, substr string)

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

image.png

  • 方法返回值:int
  • 如果s包含sub,则返回sub出现在s位置中的第一个索引,下标从0开始
  • 如果s不包含sub,则返回-1

示例:

// 定义一个字符串:chengyunlai
str := "chengyunlai"

println(strings.Index(str, "y")) //5
println(strings.Index(str, "x")) //-1

方法:strings.ContainsAny() - 是否包含某个值

语法:strings.ContainsAny(s string, chars string)

是否某个字符在s内。

image.png

  • 方法返回值:bool
  • 如果s包含chars中任意一个值,如果包含返回true
  • 如果s不包含chars中任意一个值,返回false

示例:

// 定义一个字符串:chengyunlai
str := "chengyunlai"

println(strings.ContainsAny(str, "zxcvbnm")) //true
println(strings.ContainsAny(str, "qwrt"))    //false

方法:strings.ContainsRune() - 是否包含这个Unicode

语法:strings.ContainsRune(s string, r rune)

是否在s内包含指定的Unicode。

image.png

  • 方法返回值:bool
  • 如果s包含指定的Unicode返回true
  • 如果s不包含指定的Unicode返回false

示例:

// 定义一个字符串:chengyunlai
str := "chengyunlai"


println(strings.ContainsRune(str, 97)) //true 提示,因为a的编码是97
println(strings.ContainsRune(str, 98)) //false

方法:strings.Count() - 数一下出现了几次

语法:strings.Count(s string, substr string)

计算在 s中出现了几次 substr,如果 substr为空,则返回总长度+1

image.png

  • 方法返回值:int

示例:

// 定义一个字符串:chengyunlai
str := "chengyunlai"


println(strings.Count(str, ""))  //12
println(strings.Count(str, "n")) //2

方法:strings.LastIndex() - 最后出现的索引

语法:strings.LastIndex(s string, substr string)

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

image.png

  • 方法返回值:int

示例:

// 定义一个字符串:chengyunlai
str := "chengyunlai"

println(strings.LastIndex(str, "n")) //7

截取

方法:strings.Cut() - 把什么切掉不要

语法:strings.Cut(s string, sep string)

Cut以 sep进行 s切片,返回 seps中之前和之后的文本,并且会返回 true。如果sep没有出现在s中,Cut分别返回 s""false

image.png

  • 方法返回值:(before string , after string , found bool)

示例:

// 定义一个字符串:chengyunlai
str := "chengyunlai"

println(strings.Cut(str, "yun")) //cheng lai true

比较

方法:strings.Compare() - 比较两个字符串

语法:strings.Compare(a string, b string)

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

image.png

  • 方法返回值:int

示例:

// 定义一个字符串:chengyunlai
str := "chengyunlai"

println(strings.Compare(str, "ahengyunlai")) //1 , c > a
println(strings.Compare(str, "chengyunlai")) //0 , c = c
println(strings.Compare(str, "dhengyunlai")) //-1 , c < d

分割

方法:strings.Split() - 按照某种规则分割字符串

语法:strings.Split(s string, sep string)

可以指定字符按照规则分割,也可以输入 ""空字符串,将整个字符串分割成单个字符

image.png

  • 方法返回值:[]string

示例:

// 定义一个字符串:chengyunlai
str2 := "cheng_yun_lai"

split := strings.Split(str2, "_")
for _, str := range split {
   println(str)
}
/**
cheng
yun
lai
*/
目录
相关文章
|
8天前
|
监控 算法 Go
Golang深入浅出之-Go语言中的服务熔断、降级与限流策略
【5月更文挑战第4天】本文探讨了分布式系统中保障稳定性的重要策略:服务熔断、降级和限流。服务熔断通过快速失败和暂停故障服务调用来保护系统;服务降级在压力大时提供有限功能以保持整体可用性;限流控制访问频率,防止过载。文中列举了常见问题、解决方案,并提供了Go语言实现示例。合理应用这些策略能增强系统韧性和可用性。
39 0
|
1天前
|
存储 编译器 Go
Go语言学习12-数据的使用
【5月更文挑战第5天】本篇 Huazie 向大家介绍 Go 语言数据的使用,包含赋值语句、常量与变量、可比性与有序性
33 6
Go语言学习12-数据的使用
|
3天前
|
Java Go
一文带你速通go语言指针
Go语言指针入门指南:简述指针用于提升效率,通过地址操作变量。文章作者sharkChili是Java/CSDN专家,维护Java Guide项目。文中介绍指针声明、取值,展示如何通过指针修改变量值及在函数中的应用。通过实例解析如何使用指针优化函数,以实现对原变量的直接修改。作者还邀请读者加入交流群深入探讨,并鼓励关注其公众号“写代码的SharkChili”。
9 0
|
3天前
|
存储 缓存 Java
来聊聊go语言的hashMap
本文介绍了Go语言中的`map`与Java的不同设计思想。作者`sharkChili`是一名Java和Go开发者,同时也是CSDN博客专家及JavaGuide项目的维护者。文章探讨了Go语言`map`的数据结构,包括`count`、`buckets指针`和`bmap`,解释了键值对的存储方式,如何利用内存对齐优化空间使用,并展示了`map`的初始化、插入键值对以及查找数据的源码过程。此外,作者还分享了如何通过汇编查看`map`操作,并鼓励读者深入研究Go的哈希冲突解决和源码。最后,作者提供了一个交流群,供读者讨论相关话题。
13 0
|
4天前
|
Java Go
Go语言学习11-数据初始化
【5月更文挑战第3天】本篇带大家通过内建函数 new 和 make 了解Go语言的数据初始化过程
17 1
Go语言学习11-数据初始化
|
4天前
|
自然语言处理 安全 Java
速通Go语言编译过程
Go语言编译过程详解:从词法分析(生成token)到句法分析(构建语法树),再到语义分析(类型检查、推断、匹配及函数内联)、生成中间码(SSA)和汇编码。最后,通过链接生成可执行文件。作者sharkchili,CSDN Java博客专家,分享技术细节,邀请读者加入交流群。
22 2
|
4天前
|
Java Linux Go
一文带你速通Go语言基础语法
本文是关于Go语言的入门介绍,作者因其简洁高效的特性对Go语言情有独钟。文章首先概述了Go语言的优势,包括快速上手、并发编程简单、设计简洁且功能强大,以及丰富的标准库。接着,文章通过示例展示了如何编写和运行Go代码,包括声明包、导入包和输出语句。此外,还介绍了Go的语法基础,如变量类型(数字、字符串、布尔和复数)、变量赋值、类型转换和默认值。文章还涉及条件分支(if和switch)和循环结构(for)。最后,简要提到了Go函数的定义和多返回值特性,以及一些常见的Go命令。作者计划在后续文章中进一步探讨Go语言的其他方面。
10 0
|
5天前
|
JavaScript 前端开发 Go
Go语言的入门学习
【4月更文挑战第7天】Go语言,通常称为Golang,是由Google设计并开发的一种编程语言,它于2009年公开发布。Go的设计团队主要包括Robert Griesemer、Rob Pike和Ken Thompson,这三位都是计算机科学和软件工程领域的杰出人物。
14 1
|
6天前
|
Go
|
6天前
|
分布式计算 Java Go
Golang深入浅出之-Go语言中的分布式计算框架Apache Beam
【5月更文挑战第6天】Apache Beam是一个统一的编程模型,适用于批处理和流处理,主要支持Java和Python,但也提供实验性的Go SDK。Go SDK的基本概念包括`PTransform`、`PCollection`和`Pipeline`。在使用中,需注意类型转换、窗口和触发器配置、资源管理和错误处理。尽管Go SDK文档有限,生态系统尚不成熟,且性能可能不高,但它仍为分布式计算提供了可移植的解决方案。通过理解和掌握Beam模型,开发者能编写高效的数据处理程序。
135 1