日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

一文帶你了解Go語言標準庫strings的常用函數和方法_Golang

作者:陳明勇 ? 更新時間: 2022-12-27 編程語言

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 變量進行介紹,使用其寫入方法可以高效地拼接字符串,然后對 ToUpperToLowerReplace 等常用函數的參數和返回值以及用法進行介紹。

原文鏈接:https://juejin.cn/post/7171453987957260324

欄目分類
最近更新