跳转到主要内容

标签(标签)

资源精选(342) Go开发(108) Go语言(103) Go(99) angular(82) LLM(75) 大语言模型(63) 人工智能(53) 前端开发(50) LangChain(43) golang(43) 机器学习(39) Go工程师(38) Go程序员(38) Go开发者(36) React(33) Go基础(29) Python(24) Vue(22) Web开发(20) Web技术(19) 精选资源(19) 深度学习(19) Java(18) ChatGTP(17) Cookie(16) android(16) 前端框架(13) JavaScript(13) Next.js(12) 安卓(11) typescript(10) 资料精选(10) NLP(10) 第三方Cookie(9) Redwoodjs(9) LLMOps(9) Go语言中级开发(9) 自然语言处理(9) 聊天机器人(9) PostgreSQL(9) 区块链(9) mlops(9) 安全(9) 全栈开发(8) ChatGPT(8) OpenAI(8) Linux(8) AI(8) GraphQL(8) iOS(8) 软件架构(7) Go语言高级开发(7) AWS(7) C++(7) 数据科学(7) whisper(6) Prisma(6) 隐私保护(6) RAG(6) JSON(6) DevOps(6) 数据可视化(6) wasm(6) 计算机视觉(6) 算法(6) Rust(6) 微服务(6) 隐私沙盒(5) FedCM(5) 语音识别(5) Angular开发(5) 快速应用开发(5) 提示工程(5) Agent(5) LLaMA(5) 低代码开发(5) Go测试(5) gorm(5) REST API(5) 推荐系统(5) WebAssembly(5) GameDev(5) CMS(5) CSS(5) machine-learning(5) 机器人(5) 游戏开发(5) Blockchain(5) Web安全(5) Kotlin(5) 低代码平台(5) 机器学习资源(5) Go资源(5) Nodejs(5) PHP(5) Swift(5) 智能体(4) devin(4) Blitz(4) javascript框架(4) Redwood(4) GDPR(4) 生成式人工智能(4) Angular16(4) Alpaca(4) SAML(4) JWT(4) JSON处理(4) Go并发(4) kafka(4) 移动开发(4) 移动应用(4) security(4) 隐私(4) spring-boot(4) 物联网(4) nextjs(4) 网络安全(4) API(4) Ruby(4) 信息安全(4) flutter(4) 专家智能体(3) Chrome(3) CHIPS(3) 3PC(3) SSE(3) 人工智能软件工程师(3) LLM Agent(3) Remix(3) Ubuntu(3) GPT4All(3) 软件开发(3) 问答系统(3) 开发工具(3) 最佳实践(3) RxJS(3) SSR(3) Node.js(3) Dolly(3) 移动应用开发(3) 编程语言(3) 低代码(3) IAM(3) Web框架(3) CORS(3) 基准测试(3) Go语言数据库开发(3) Oauth2(3) 并发(3) 主题(3) Theme(3) earth(3) nginx(3) 软件工程(3) azure(3) keycloak(3) 生产力工具(3) gpt3(3) 工作流(3) C(3) jupyter(3) 认证(3) prometheus(3) GAN(3) Spring(3) 逆向工程(3) 应用安全(3) Docker(3) Django(3) R(3) .NET(3) 大数据(3) Hacking(3) 渗透测试(3) C++资源(3) Mac(3) 微信小程序(3) Python资源(3) JHipster(3) 大型语言模型(2) 语言模型(2) 可穿戴设备(2) JDK(2) SQL(2) Apache(2) Hashicorp Vault(2) Spring Cloud Vault(2) Go语言Web开发(2) Go测试工程师(2) WebSocket(2) 容器化(2) AES(2) 加密(2) 输入验证(2) ORM(2) Fiber(2) Postgres(2) Gorilla Mux(2) Go数据库开发(2) 模块(2) 泛型(2) 指针(2) HTTP(2) PostgreSQL开发(2) Vault(2) K8s(2) Spring boot(2) R语言(2) 深度学习资源(2) 半监督学习(2) semi-supervised-learning(2) architecture(2) 普罗米修斯(2) 嵌入模型(2) productivity(2) 编码(2) Qt(2) 前端(2) Rust语言(2) NeRF(2) 神经辐射场(2) 元宇宙(2) CPP(2) 数据分析(2) spark(2) 流处理(2) Ionic(2) 人体姿势估计(2) human-pose-estimation(2) 视频处理(2) deep-learning(2) kotlin语言(2) kotlin开发(2) burp(2) Chatbot(2) npm(2) quantum(2) OCR(2) 游戏(2) game(2) 内容管理系统(2) MySQL(2) python-books(2) pentest(2) opengl(2) IDE(2) 漏洞赏金(2) Web(2) 知识图谱(2) PyTorch(2) 数据库(2) reverse-engineering(2) 数据工程(2) swift开发(2) rest(2) robotics(2) ios-animation(2) 知识蒸馏(2) 安卓开发(2) nestjs(2) solidity(2) 爬虫(2) 面试(2) 容器(2) C++精选(2) 人工智能资源(2) Machine Learning(2) 备忘单(2) 编程书籍(2) angular资源(2) 速查表(2) cheatsheets(2) SecOps(2) mlops资源(2) R资源(2) DDD(2) 架构设计模式(2) 量化(2) Hacking资源(2) 强化学习(2) flask(2) 设计(2) 性能(2) Sysadmin(2) 系统管理员(2) Java资源(2) 机器学习精选(2) android资源(2) android-UI(2) Mac资源(2) iOS资源(2) Vue资源(2) flutter资源(2) JavaScript精选(2) JavaScript资源(2) Rust开发(2) deeplearning(2) RAD(2)

介绍


Go 的字符串包有几个函数可用于处理字符串数据类型。这些函数让我们可以轻松地修改和操作字符串。我们可以将函数视为我们对代码元素执行的操作。内置函数是那些在 Go 编程语言中定义并且可供我们随时使用的函数。

在本教程中,我们将回顾几个可用于在 Go 中处理字符串的不同函数。

使字符串大写和小写


函数 strings.ToUpper 和 strings.ToLower 将返回一个字符串,其中原始字符串的所有字母都转换为大写或小写字母。因为字符串是不可变的数据类型,所以返回的字符串将是一个新字符串。字符串中的任何非字母字符都不会更改。

要将字符串“Sammy Shark”全部转换为大写,您可以使用 strings.ToUpper 函数:

ss := "Sammy Shark"
fmt.Println(strings.ToUpper(ss))

Output
SAMMY SHARK


要转换为小写:

fmt.Println(strings.ToLower(ss))

Output
sammy shark

由于您使用的是 strings 包,因此您首先需要将其导入程序中。要将字符串转换为大写和小写,整个程序如下:

package main

import (
    "fmt"
    "strings"
)

func main() {
    ss := "Sammy Shark"
    fmt.Println(strings.ToUpper(ss))
    fmt.Println(strings.ToLower(ss))
}

strings.ToUpper 和 strings.ToLower 函数通过使大小写始终保持一致,可以更轻松地评估和比较字符串。 例如,如果用户的姓名全小写,我们仍然可以通过检查全大写版本来确定他们的姓名是否在我们的数据库中。

字符串搜索函数


strings 包有许多函数可以帮助确定字符串是否包含特定的字符序列。

Function Use
strings.HasPrefix Searches the string from the beginning
strings.HasSuffix Searches the string from the end
strings.Contains Searches anywhere in the string
strings.Count Counts how many times the string appears

strings.HasPrefix 和 strings.HasSuffix 允许您检查字符串是否以特定字符集开头或结尾。

例如,要检查字符串“Sammy Shark”是否以 Sammy 开头并以 Shark 结尾:

ss := "Sammy Shark"
fmt.Println(strings.HasPrefix(ss, "Sammy"))
fmt.Println(strings.HasSuffix(ss, "Shark"))

Output
true
true


您将使用 strings.Contains 函数来检查“Sammy Shark”是否包含序列 Sh:

fmt.Println(strings.Contains(ss, "Sh"))

Output
true


最后,看看Sammy Shark这个短语中出现了多少次字母S:

fmt.Println(strings.Count(ss, "S"))

Output
2


注意:Go 中的所有字符串都区分大小写。这意味着 Sammy 与 sammy 不同。

使用小写字母 s 从 Sammy Shark 获取计数与使用大写字母 S 不同:

fmt.Println(strings.Count(ss, "s"))

Output
0


因为 S 与 s 不同,所以返回的计数将为 0。

当您想在程序中比较或搜索字符串时,字符串函数很有用。

确定字符串长度


内置函数 len() 返回字符串中的字符数。 当您需要强制最小或最大密码长度,或将较大的字符串截断以在特定限制内用作缩写时,此功能很有用。

为了演示这个功能,我们将找到一个句子长字符串的长度:

import (
    "fmt"
    "strings"
)

func main() {
        openSource := "Sammy contributes to open source."
        fmt.Println(len(openSource))
}

我们将变量 openSource 设置为等于字符串“Sammy 对开源做出贡献”。然后使用 len(openSource) 将该变量传递给 len() 函数。最后,我们将函数传递给 fmt.Println() 函数,以便我们可以在屏幕上看到程序的输出……

请记住,len() 函数将计算任何用双引号括起来的字符,包括字母、数字、空白字符和符号。

字符串操作函数


strings.Join、strings.Split 和 strings.ReplaceAll 函数是在 Go 中操作字符串的一些额外方法。

strings.Join 函数可用于将字符串切片组合成一个新的单个字符串。

要从字符串切片创建逗号分隔的字符串,我们将按以下方式使用此函数:

fmt.Println(strings.Join([]string{"sharks", "crustaceans", "plankton"}, ","))


Output
sharks,crustaceans,plankton


如果我们想在我们的新字符串中的字符串值之间添加一个逗号和一个空格,我们可以简单地用逗号后的空格重写我们的表达式:strings.Join([]string{"sharks", "crustaceans", "plankton" },“,”)。

就像我们可以将字符串连接在一起一样,我们也可以拆分字符串。为此,我们可以使用 strings.Split 函数并拆分空格:

balloon := "Sammy has a balloon."
s := strings.Split(balloon, " ")
fmt.Println(s)

Output
[Sammy has a balloon]


输出是一段字符串。由于使用了 strings.Println,因此很难通过查看来判断输出是什么。要查看它确实是一段字符串,请使用带有 %q 动词的 fmt.Printf 函数来引用字符串:

fmt.Printf("%q", s)

Output
["Sammy" "has" "a" "balloon."]


除了strings.Split 之外,另一个有用的函数是strings.Fields。不同之处在于 strings.Fields 将忽略所有空格,并且只会拆分字符串中的实际字段:

data := "  username password     email  date"
fields := strings.Fields(data)
fmt.Printf("%q", fields)

Output
["username" "password" "email" "date"]


strings.ReplaceAll 函数可以采用原始字符串并返回更新后的字符串并进行一些替换。

假设 Sammy 的气球丢失了。 由于 Sammy 不再有这个气球,我们将在新字符串中将子字符串“has”从原始字符串气球更改为“had”:

fmt.Println(strings.ReplaceAll(balloon, "has", "had"))


在括号内,首先是存储原始字符串的变量气球; 第二个子字符串“has”是我们要替换的,第三个子字符串“had”是我们要替换第二个子字符串的。 当我们将其合并到程序中时,我们的输出将如下所示:

Output
Sammy had a balloon.


使用字符串函数 strings.Join、strings.Split 和 strings.ReplaceAll 将为您提供更好的控制来在 Go 中操作字符串。

结论


本教程介绍了一些用于字符串数据类型的常见字符串包函数,您可以使用这些函数在 Go 程序中处理和操作字符串。

文章链接