如何在 Golang 中搜索和替換字串中的文字?


我們經常需要用其他字串替換某些字串或所有與某個模式匹配的字串。為了在**Golang**中實現這一點,我們可以使用 Go 標準庫的**strings**包提供的原生函式,或者我們可以自己編寫相應的邏輯。

在本文中,我們將看到不同的示例,其中我們將使用**strings**包中兩個最常用的函式。這些函式是:

  • strings.Replace()

  • strings.ReplaceAll()

讓我們首先考慮這些函式的簽名,以瞭解更多關於它們的資訊。

strings.Replace() 的語法

func Replace(s, old, new string, n int) string
  • 上述函式的第一個引數是包含我們要與另一個字串匹配以進行替換的子字串的字串。

  • 第二個引數是我們想要用新字串替換的子字串。

  • 第三個引數是我們想要替換字串中匹配模式的字串。

  • 最後一個引數是我們想要替換的匹配次數。

需要注意的是,如果我們想要替換所有與模式匹配的出現次數,那麼在呼叫**Replace**函式時,應該將**-1**作為最後一個引數傳遞。

讓我們探索**Replace**函式的一個示例,以瞭解其工作原理。

示例 1

請考慮以下所示的程式碼。

package main
import (
   "fmt"
   "strings"
)
func main() {
   var str string = "It is not is a string is"
   res := strings.Replace(str, "is", "isn't", 2)
   fmt.Println(res)
}

輸出

如果我們在上述程式碼上執行命令**go run main.go**,則將在終端中獲得以下輸出。

It isn't not isn't a string is

請注意,我們只是替換了匹配字串的前兩個出現次數。如果我們想要替換所有出現次數,則可以使用以下所示的程式碼。

示例 2

請考慮以下所示的程式碼。

package main
import (
   "fmt"
   "strings"
)
func main() {
   var str string = "It is not is a string is"
   res := strings.Replace(str, "is", "isn't", -1)
   fmt.Println(res)
}

輸出

如果我們在上述程式碼上執行命令**go run main.go**,則將在終端中獲得以下輸出。

It isn't not isn't a string isn't

**strings.ReplaceAll()**函式的行為類似於**Replace()**,最後一個引數為**-1**。

示例 3

請考慮以下所示的程式碼。

package main
import (
   "fmt"
   "strings"
)
func main() {
   var str string = "It is not is a string is"
   res := strings.ReplaceAll(str, "is", "isn't")
   fmt.Println(res)
}

輸出

如果我們在上述程式碼上執行命令**go run main.go**,則將在終端中獲得以下輸出。

It isn't not isn't a string isn't

更新於: 2022年2月21日

1K+ 次瀏覽

啟動您的 職業生涯

透過完成課程獲得認證

開始
廣告

© . All rights reserved.