Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Go语言中常见100问题-#38 Misusing trim functions

Go语言中常见100问题-#38 Misusing trim functions

作者头像
数据小冰
发布于 2023-08-17 00:33:11
发布于 2023-08-17 00:33:11
20602
代码可运行
举报
文章被收录于专栏:数据小冰数据小冰
运行总次数:2
代码可运行
误用trim函数

很多Gopher常犯的一个错误是混合使用strings包中的 TrimRight 和 TrimSuffix 函数,因为这个两个函数提供的功能相似,极容易产生误用。下面通过具体的例子说明。

下面的代码使用 TrimRight 函数,这段代码的输出结果是啥?结果是123. 你猜想的也是123吗?如果不是,大概率你把TrimRight当成了TrimSuffix。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
fmt.Println(strings.TrimRight("123oxo", "xo"))

TrimRight函数接收两个字符串参数,分别命名为字符串1和字符串2,它实现的功能是从字符串1的右边开始,且从右到左中间不包含其它字符的前提下,找到包含字符串2中所有的字符组合的部分将其删除,如果从右到左的过程中,遇到其它字符,则停止检索删除。

上面的代码中,字符串2是xo,包含x和o两个字符,所以从右向左在字符串123oxo中检索包含x和o的字符,并它将它们删除,检索过程遇到3停止。

TrimSuffix实现的功能是字符串后缀匹配截断,下面的代码输出结果是123o。因为123oxo以xo结尾。注意,该过程不是重复操作。例如,TrimSuffix("123xoxo", "xo")输出的结果是123xo.

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
fmt.Println(strings.TrimSuffix("123oxo", "xo"))

上述实现规则同样适用于 TrimLeft 和 TrimPrefix函数。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
fmt.Println(strings.TrimLeft("oxo123", "ox")) // 123
fmt.Println(strings.TrimPrefix("oxo123", "ox")) /// o123

最后来分析 Trim 函数,该函数结合了 TrimLeft 和 TrimRight 两个函数功能,它将字符串中开头和结尾中含有裁剪的字符都去掉。下面的函数将字符串oxo123oxo开头和结尾中含有的字符o和x都去掉。输出的内容是123。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
fmt.Println(strings.Trim("oxo123oxo", "ox")) // 123
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-06-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据小冰 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Go 语言常见错误——字符串
在 Go 语言中,字符串是最常见的数据类型之一,广泛用于处理文本数据。然而,许多开发者在操作字符串时容易犯一些常见错误,导致程序运行异常或性能问题。例如,字符串的不可变性、拼接操作的效率问题以及对字符编码的误解等,都是新手容易忽视的地方。
FunTester
2025/03/10
1320
Go 语言常见错误——字符串
Go 开发中strings库的trim函数详解
Go 语言的 strings 包中的 trim 相关函数为我们提供了灵活的字符串裁剪功能。通过熟练掌握这些函数,我们可以在开发过程中更高效地处理字符串,提升代码的简洁性和可读性。
运维开发王义杰
2023/09/09
3.6K0
Go 开发中strings库的trim函数详解
【Go 基础篇】Go 语言字符串函数详解:处理字符串进阶
大家好!继续我们关于Go语言中字符串函数的探索。字符串是编程中常用的数据类型,而Go语言为我们提供了一系列实用的字符串函数,方便我们进行各种操作,如查找、截取、替换等。在上一篇博客的基础上,我们将继续介绍更多字符串函数的用法和示例。(*^_^*)💕💕💕💕
繁依Fanyi
2023/10/12
7370
【Go 基础篇】Go 语言字符串函数详解:处理字符串进阶
Go 字符串处理
因为字符串类型在Go中是不可改变的,因此每次操作实际都要新分配字符串,所以在字符串比较多的时候效率不高。
孤烟
2020/09/27
8040
Go错误集锦 | 字符串底层原理及常见错误
string是Go语言的基础类型,在实际项目中针对字符串的各种操作使用频率也较高。本文就介绍一下在使用string时容易犯的一些错误以及如何避免。
Go学堂
2023/01/31
4010
Golang语言社区--标准库strings包讲解
大家好,我是Golang语言社区主编彬哥,本篇文章是给大家转载关于标准库strings包的知识。
李海彬
2018/03/13
2.3K0
Golang语言社区--标准库strings包讲解
Go语言中的字符串
Go语言中的字符串也可以使用比较操作符 <, <=, ==, !=, >, >=。具体比较方法是将字符串转化成的字节数组中的字节逐一比较。
宅蓝三木
2024/10/09
1360
100 个 Go 错误以及如何避免:5~8
我们将在本章中看到 Go 有一个非常独特的处理字符串的方法。Go 引入了一个概念叫做符文;这个概念对于理解是必不可少的,可能会让新手感到困惑。一旦我们知道了字符串是如何被管理的,我们就可以避免在字符串上迭代时的常见错误。我们还将看看 Go 开发者在使用或生成字符串时所犯的常见错误。此外,我们会看到有时我们可以直接使用[]byte工作,避免额外的分配。最后,我们将讨论如何避免一个常见的错误,这个错误会造成子字符串的泄漏。本章的主要目的是通过介绍常见的字符串错误来帮助你理解字符串在 Go 中是如何工作的。
ApacheCN_飞龙
2023/10/13
1K0
100 个 Go 错误以及如何避免:5~8
(二十一)golang--字符串中的函数
(5)字符串转[]bytes:var bytes = []byte("hello")
西西嘛呦
2020/08/26
6920
Go语言3
字符串替换,对原始字符串str进行替换,把原始的old替换成new。 最后一个n是替换的次数,如果 n<0 则替换所有。一般就-1。
py3study
2020/01/07
6040
【转】Go语言---strings包(字符串操作)
字符串求长度 求子串 是否存在某个字符或者子串 子串出现的次数(字符串匹配) 字符串分割(切分)成[]string 字符串是否存在某个前缀或后缀 字符或者子串在字符串中首次出现的位置或最后一次出现的位置 通过某个字符串将[]string进行拼接 字符串重复次数 字符串中子串替换 大小写转换 ......................等等一些基本操作。 由于string类型可以看成是一种特殊的slice类型,因此获取长度可以用内置的函数len;同时支持 切片 操作,因此,子串获取很容易。
yiduwangkai
2019/09/17
1K0
Go 编程 | 连载 04 - 字符与字符串类型
Go 默认使用 Unicode 字符集并使用 UTF-8 作为编码方式。Go 中没有字符类型,而是使用 byte 类型和 rune 类型来表示字符。
RiemannHypothesis
2022/09/26
3210
Go 编程 | 连载 04 - 字符与字符串类型
『Go 内置库第一季:strings』
这一季的系列主题,主要围绕内置库进行。如果一个人写的代码比你的赞,那么他对内置库的熟悉程度一定比你强。
谢伟
2018/12/05
4960
Go 中的坑
defer 执行顺序是先进后出,栈的方式 FIFO ,参数的值在 defer 语句执行就已经确定了
王小明_HIT
2021/07/05
5790
Go字符串
字符串 字符集用来做什么 字符集是为每个字符分配一个唯一的ID 在同一个字符集内,字符的ID是唯一的,不同字符集ID可能是不同的 UTF-8是编码规则或者说是Unicode的一种实现 UTF-8将Unicode中的字符ID以某种方式进行编码 变长的编码规则: 1-4字节,具体规则: 0xxxx表示0~127代表ascii Go语言中的字符串内部实现编码是UTF-8的,默认是rune类型 字符串是什么? 定义字符串 双引号和反引号 golang中单引号,双引号代表的含义 var ch = 'a' 代表ut
Wyc
2023/02/27
3270
Go基础——字符串
字符串结构由两个信息组成:第一个是字符串指向的底层字节数组,第二个是字符串的字节的长度。字符串其实是一个结构体,因此字符串的赋值操作也就是reflect.StringHeader结构体的复制过程,并不会涉及底层字节数组的复制。在前面数组一节提到的[2]string字符串数组对应的底层结构和[2]reflect.StringHeader对应的底层结构是一样的,可以将字符串数组看作一个结构体数组。 我们可以看看字符串“Hello, world”本身对应的内存结构:
羊羽shine
2019/05/28
5590
一文了解 Go 标准库 strings 常用函数和方法
strings 库包含了许多高效的字符串常用操作的函数和方法,巧用这些函数与方法,能极大的提高我们程序的性能。下面介绍一些常用的函数和方法。
陈明勇
2023/10/15
6030
一文了解 Go 标准库 strings 常用函数和方法
【愚公系列】2022年08月 Go教学课程 040-字符串处理
文章目录 前言 一、字符串处理函数 1.len() 2.Atoi() 3.Itoa() 4.字符串转[]byte 5.byte[]转字符串 6.FormatInt() 7.Contains() 8.Count() 9.EqualFold() 10.Index() 11.LastIndex() 12.Replace() 13.Split() 14.ToLower()和ToUpper() 15.TrimSpace() 16.Trim() 17.HasPrefix() 18.join() 19.Repeat(
愚公搬代码
2022/09/21
3090
Go 从入门到精通(三)字符串,时间,流程控制,函数
coders
2018/01/04
7000
2018年Go语言实战笔记2string字符串处理time时间处理指针strconv 类型转换rand 随机数函数几个实例
接触一门新语言,了解其语法结构,常用的包是必须的,同时也是无聊的。有过其他编程语言基础的同学,学习go的语法很简单,参照 go文档 过一遍就能对go的语法有大致的了解。通过 go包文档 查阅常用包的使用
章鱼喵
2018/08/02
3920
2018年Go语言实战笔记2string字符串处理time时间处理指针strconv 类型转换rand 随机数函数几个实例
推荐阅读
相关推荐
Go 语言常见错误——字符串
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验