網站首頁 編程語言 正文
strings 庫
strings
庫包含了許多高效的字符串常用操作的函數和方法,巧用這些函數與方法,能極大的提高我們程序的性能。下面介紹一些常用的函數和方法。
高效拼接字符串
使用 strings
庫里的 Builder
變量,結合其寫入方法如 WriteString
方法,可以進行高效的拼接字符串。
import ( "strings" ) func main() { var builder strings.Builder builder.WriteString("hello") builder.WriteString(" ") builder.WriteString("world") builder.WriteString("!") s := builder.String() println(s) // hello world! }
strings.Builder
底層是通過其內部的 slice
來儲存內容的。當調用其相關的寫入方法(如 WriteString
)的時,新的字節數據就會被追加到 slice
上。相比普通字符串的多次拼接,減少了拼接時需要創建新字符串的內存開銷。
大小寫轉換
小寫轉大寫
ToUpper(s string) string
:將一個字符串里的小寫字符轉成大寫,因為字符串不可變的特點,該函數會返回一個新的字符串。
import "strings" func main() { s1 := "hello" s2 := strings.ToUpper(s1) println(s2) // HELLO }
大寫轉小寫
ToLower(s string) string
:將一個字符串里的大寫字符轉成小寫,因為字符串不可變的特點,該函數會返回一個新的字符串。
import "strings" func main() { s1 := "HELLO" s2 := strings.ToLower(s1) println(s2) // hello }
比較兩個字符串
區分大小寫比較
func main() { s1 := "hello" s2 := "hello" s3 := "HELLO" println(s1 == s2) // true println(s1 == s3) // false }
直接通過 ==
操作符進行區分大小寫的字符串比較即可。
不區分大小寫比較 使用 EqualFold(s, t string) bool
函數進行比較,兩個參數為需要比較的兩個字符串,返回值為布爾值,如果是 true
說明字符串相等,反之 false
則字符串不相等。
func main() { s1 := "hello" s2 := "hello" s3 := "HELLO" isEual := strings.EqualFold(s1, s2) println(isEual) // true isEual2 := strings.EqualFold(s1, s3) println(isEual2) // true }
字符串的替換
字符串替換的函數:Replace(s, old, new string, n int) string
- 第一個參數
s
為原字符串。 - 第二個參數
old
為需要替換的字符串。 - 第三個參數
new
為替換后的字符串。 - 第四個參數
n
為指定替換幾個old
,如果n
小于 0,則替換全部。 - 返回值為替換后的新字符串。
案例:實現對敏感詞的替換
func main() { s1 := "我靠啊靠" s2 := strings.Replace(s1, "靠", "*", 1) println(s2) // true 我*啊靠 s3 := "我靠啊靠" s4 := strings.Replace(s3, "靠", "*", -1) println(s4) // true 我*啊* }
第一次替換時,n
指定為 1
,因此只替換了一個敏感詞。 第二次替換時,n
指定為 -1
,小于 0
,因此將所有敏感詞都替換了。
按照某個分割標識分割字符串
分割字符串的函數:Split(s, sep string) []string
- 第一個參數
s
為需要分割的字符串。 - 第二個參數
sep
為分割的標識。 - 返回值為字符串切片,保存被分割出來的子字符串。
import ( "fmt" "strings" ) func main() { s1 := "golang-is-awesome" strSlice := strings.Split(s1, "-") fmt.Println(strSlice) // [golang is awesome] }
去掉字符串左右兩邊的空格
函數:TrimSpace(s string) string
- 第一個參數
s
為需要去除空格的字符串。 - 返回值為去除空格后的新字符串。
import ( "strings" ) func main() { s1 := " golang is awesome " s2 := strings.TrimSpace(s1) println(s2) // "golang is awesome" }
將字符串[左邊]或[右邊]或[左右兩邊]所指定的字符(串)去掉
將字符串[左右兩邊]所指定的字符(串)去掉
函數:Trim(s, cutset string) string
import ( "strings" ) func main() { s1 := "-golang is awesome-" s2 := strings.Trim(s1, "-") println(s2) // "golang is awesome" }
第一個參數 s
為需要去除指定字符的字符串。
第二個參數為指定的字符(串)。
將字符串[左邊]所指定的字符(串)去掉
函數:TrimLeft(s, cutset string) string
import ( "strings" ) func main() { s1 := "-golang is awesome" s2 := strings.TrimLeft(s1, "-") println(s2) // "golang is awesome" }
第一個參數 s
為需要去除指定字符的字符串。
第二個參數為指定的字符(串)。
將字符串[右邊]所指定的字符(串)去掉
函數:TrimRight(s, cutset string) string
import ( "strings" ) func main() { s1 := "golang is awesome-" s2 := strings.TrimRight(s1, "-") println(s2) // "golang is awesome" }
第一個參數 s
為需要去除指定字符的字符串。
第二個參數為指定的字符(串)。
判斷字符串是否以指定的字符串開頭
函數:HasPrefix(s, prefix string) bool
- 第一個參數
s
為被判斷字符串。 - 第二個參數
prefix
為指定的字符串。
import ( "strings" ) func main() { s1 := "hello world!" flag := strings.HasPrefix(s1, "hello") println(flag) // true }
判斷字符串是否以指定的字符串結束
函數:HasSuffix(s, prefix string) bool
- 第一個參數
s
為被判斷字符串。 - 第二個參數
prefix
為指定的字符串。
import ( "strings" ) func main() { s1 := "hello world!" flag := strings.HasSuffix(s1, "!") println(flag) // true }
將字符串切片中的元素以指定字符串連接生成新字符串
函數:Join(elems []string, sep string) string
- 第一個參數
elems
為字符串切片。 - 第二個參數
sep
為連接符。 - 返回值為新的字符串。
import ( "strings" ) func main() { strSlice := []string{"golang", "is", "awesome"} s := strings.Join(strSlice, "-") println(s) // golang-is-awesome }
查找子串是否存在于指定的字符串中
函數: Contains(s, substr string) bool
- 第一個參數
s
為指定的字符串。 - 第二個參數
substr
為子串。 - 返回值為布爾值,如果是
true
說明存在,反之false
則不存在。
import ( "strings" ) func main() { s := "golang is awesome" isContains := strings.Contains(s, "golang") println(isContains) // true }
小結
本文先對 strings 標準庫里的 Builder
變量進行介紹,使用其寫入方法可以高效地拼接字符串,然后對 ToUpper
、ToLower
、Replace
等常用函數的參數和返回值以及用法進行介紹。
原文鏈接:https://juejin.cn/post/7171453987957260324
相關推薦
- 2023-01-03 利用C++模擬實現STL容器:list_C 語言
- 2022-02-04 防止點擊量頁面刷新增加的簡單處理方法
- 2022-12-04 go高并發時append方法偶現錯誤解決分析_Golang
- 2022-11-01 Python正則表達中re模塊的使用_python
- 2022-12-10 K8S節點本地存儲被撐爆問題徹底解決方法_云其它
- 2022-10-27 React?State與生命周期詳細介紹_React
- 2023-01-23 python操作excel之xlwt與xlrd_python
- 2022-06-01 如何利用Python將字典轉為成員變量_python
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支