欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時間:2022年11月30日 08:52:39   作者:陳明勇  
strings?庫包含了許多高效的字符串常用操作的函數(shù)和方法,巧用這些函數(shù)與方法,能極大的提高我們程序的性能。本文就來和大家分享一下Go標準庫strings的常用函數(shù)和方法,希望對大家有所幫助

strings 庫

strings 庫包含了許多高效的字符串常用操作的函數(shù)和方法,巧用這些函數(shù)與方法,能極大的提高我們程序的性能。下面介紹一些常用的函數(shù)和方法。

高效拼接字符串

使用 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 )的時,新的字節(jié)數(shù)據(jù)就會被追加到 slice 上。相比普通字符串的多次拼接,減少了拼接時需要創(chuàng)建新字符串的內存開銷。

大小寫轉換

小寫轉大寫

ToUpper(s string) string:將一個字符串里的小寫字符轉成大寫,因為字符串不可變的特點,該函數(shù)會返回一個新的字符串。

import "strings"

func main() {
    s1 := "hello"
    s2 := strings.ToUpper(s1)
    println(s2) // HELLO
}

大寫轉小寫

ToLower(s string) string:將一個字符串里的大寫字符轉成小寫,因為字符串不可變的特點,該函數(shù)會返回一個新的字符串。

import "strings"

func main() {
    s1 := "HELLO"
    s2 := strings.ToLower(s1)
    println(s2) // hello
}

比較兩個字符串

區(qū)分大小寫比較

func main() {
    s1 := "hello"
    s2 := "hello"
    s3 := "HELLO"
    println(s1 == s2) // true
    println(s1 == s3) // false
}

直接通過 == 操作符進行區(qū)分大小寫的字符串比較即可。

不區(qū)分大小寫比較 使用 EqualFold(s, t string) bool 函數(shù)進行比較,兩個參數(shù)為需要比較的兩個字符串,返回值為布爾值,如果是 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
}

字符串的替換

字符串替換的函數(shù):Replace(s, old, new string, n int) string

  • 第一個參數(shù) s 為原字符串。
  • 第二個參數(shù) old 為需要替換的字符串。
  • 第三個參數(shù) new 為替換后的字符串。
  • 第四個參數(shù) n 為指定替換幾個 old ,如果 n 小于 0,則替換全部。
  • 返回值為替換后的新字符串。

案例:實現(xiàn)對敏感詞的替換

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,因此將所有敏感詞都替換了。

按照某個分割標識分割字符串

分割字符串的函數(shù):Split(s, sep string) []string

  • 第一個參數(shù) s 為需要分割的字符串。
  • 第二個參數(shù) sep 為分割的標識。
  • 返回值為字符串切片,保存被分割出來的子字符串。
import (
    "fmt"
    "strings"
)

func main() {
    s1 := "golang-is-awesome"
    strSlice := strings.Split(s1, "-")
    fmt.Println(strSlice) // [golang is awesome]
}

去掉字符串左右兩邊的空格

函數(shù):TrimSpace(s string) string

  • 第一個參數(shù) s 為需要去除空格的字符串。
  • 返回值為去除空格后的新字符串。
import (
    "strings"
)

func main() {
    s1 := "      golang is awesome       "
    s2 := strings.TrimSpace(s1)
    println(s2) // "golang is awesome"
}

將字符串[左邊]或[右邊]或[左右兩邊]所指定的字符(串)去掉

將字符串[左右兩邊]所指定的字符(串)去掉

函數(shù):Trim(s, cutset string) string

import (
    "strings"
)

func main() {
    s1 := "-golang is awesome-"
    s2 := strings.Trim(s1, "-")
    println(s2) // "golang is awesome"
}

第一個參數(shù) s 為需要去除指定字符的字符串。

第二個參數(shù)為指定的字符(串)。

將字符串[左邊]所指定的字符(串)去掉

函數(shù):TrimLeft(s, cutset string) string

import (
    "strings"
)

func main() {
    s1 := "-golang is awesome"
    s2 := strings.TrimLeft(s1, "-")
    println(s2) // "golang is awesome"
}

第一個參數(shù) s 為需要去除指定字符的字符串。

第二個參數(shù)為指定的字符(串)。

將字符串[右邊]所指定的字符(串)去掉

函數(shù):TrimRight(s, cutset string) string

import (
 "strings"
)

func main() {
    s1 := "golang is awesome-"
    s2 := strings.TrimRight(s1, "-")
    println(s2) // "golang is awesome"
}

第一個參數(shù) s 為需要去除指定字符的字符串。

第二個參數(shù)為指定的字符(串)。

判斷字符串是否以指定的字符串開頭

函數(shù):HasPrefix(s, prefix string) bool

  • 第一個參數(shù) s 為被判斷字符串。
  • 第二個參數(shù) prefix 為指定的字符串。
import (
    "strings"
)

func main() {
    s1 := "hello world!"
    flag := strings.HasPrefix(s1, "hello")
    println(flag) // true
}

判斷字符串是否以指定的字符串結束

函數(shù):HasSuffix(s, prefix string) bool

  • 第一個參數(shù) s 為被判斷字符串。
  • 第二個參數(shù) prefix 為指定的字符串。
import (
    "strings"
)

func main() {
    s1 := "hello world!"
    flag := strings.HasSuffix(s1, "!")
    println(flag) // true
}

將字符串切片中的元素以指定字符串連接生成新字符串

函數(shù):Join(elems []string, sep string) string

  • 第一個參數(shù) elems 為字符串切片。
  • 第二個參數(shù) sep 為連接符。
  • 返回值為新的字符串。
import (
    "strings"
)

func main() {
    strSlice := []string{"golang", "is", "awesome"}
    s := strings.Join(strSlice, "-")
    println(s) // golang-is-awesome
}

查找子串是否存在于指定的字符串中

函數(shù): Contains(s, substr string) bool

  • 第一個參數(shù) s 為指定的字符串。
  • 第二個參數(shù) substr 為子串。
  • 返回值為布爾值,如果是 true 說明存在,反之 false 則不存在。
import (
    "strings"
)

func main() {
    s := "golang is awesome"
    isContains := strings.Contains(s, "golang")
    println(isContains) // true
}

小結

本文先對 strings 標準庫里的 Builder 變量進行介紹,使用其寫入方法可以高效地拼接字符串,然后對 ToUpper、ToLower、Replace 等常用函數(shù)的參數(shù)和返回值以及用法進行介紹。

到此這篇關于一文帶你了解Go語言標準庫strings的常用函數(shù)和方法的文章就介紹到這了,更多相關Go語言strings內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 阿里云go開發(fā)環(huán)境搭建過程

    阿里云go開發(fā)環(huán)境搭建過程

    這篇文章主要介紹了阿里云go開發(fā)環(huán)境搭建過程,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2018-02-02
  • Go 在 MongoDB 中常用查詢與修改的操作

    Go 在 MongoDB 中常用查詢與修改的操作

    這篇文章主要介紹了Go 在 MongoDB 中常用查詢與修改的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-05-05
  • 詳解如何讓Go語言中的反射加快

    詳解如何讓Go語言中的反射加快

    這篇文章主要為大家詳細介紹了如何讓Go語言中的反射加快的方法,文中的示例代碼講解詳細,對我們學習Go語言有一定幫助,需要的可以參考一下
    2022-08-08
  • 基于Go Int轉string幾種方式性能測試

    基于Go Int轉string幾種方式性能測試

    這篇文章主要介紹了Go Int轉string幾種方式測試,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04
  • go?module化?import?調用本地模塊?tidy的方法

    go?module化?import?調用本地模塊?tidy的方法

    這篇文章主要介紹了go?module化?import?調用本地模塊?tidy的相關知識,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-09-09
  • go語言題解LeetCode674最長連續(xù)遞增序列

    go語言題解LeetCode674最長連續(xù)遞增序列

    這篇文章主要為大家介紹了go語言題解LeetCode674最長連續(xù)遞增序列示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-12-12
  • 詳解Golang中Context的原理和使用技巧

    詳解Golang中Context的原理和使用技巧

    Golang?的?Context?包,中文可以稱之為“上下文”,是用來在?goroutine?協(xié)程之間進行上下文信息傳遞的,這些上下文信息包括?kv?數(shù)據(jù)、取消信號、超時時間、截止時間等。本文主要介紹了Context的原理和使用技巧,希望對大家有所幫助
    2022-11-11
  • 深入分析Golang Server源碼實現(xiàn)過程

    深入分析Golang Server源碼實現(xiàn)過程

    這篇文章深入介紹了Golang Server源碼實現(xiàn)過程,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習吧
    2023-02-02
  • Go語言Web編程實現(xiàn)Get和Post請求發(fā)送與解析的方法詳解

    Go語言Web編程實現(xiàn)Get和Post請求發(fā)送與解析的方法詳解

    這篇文章主要介紹了Go語言Web編程實現(xiàn)Get和Post請求發(fā)送與解析的方法,結合實例形式分析了Go語言客戶端、服務器端結合實現(xiàn)web數(shù)據(jù)get、post發(fā)送與接收數(shù)據(jù)的相關操作技巧,需要的朋友可以參考下
    2017-06-06
  • Go語言讀取文件的四種方式

    Go語言讀取文件的四種方式

    本文主要介紹了Go語言讀取文件的四種方式,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-04-04

最新評論