使用正則表示式列印每個單詞首字母的 Golang 程式


正則表示式(regex 或 regexp)是一串字元,用於建立搜尋模式。正則表示式常用於執行字串匹配,也稱為“查詢和替換”或字串模式匹配。它們還可以用於輸入驗證、解析等任務。正則表示式使用特殊字元和元字元來指定要匹配的模式,並且它們的語法在不同的計算機語言之間差異很大。讓我們看看不同的 Golang 示例,以更清楚地瞭解這個概念。

方法 1:使用 regex.MustCompile() 函式

在這個示例中,我們將瞭解如何使用 regex.MustCompile() 函式列印每個單詞的首字母。此程式使用 regexp 庫建立一個正則表示式,該表示式匹配每個單詞的首字母。FindAllString 方法用於在輸入字串中搜索與正則表示式匹配的每個例項,並將結果字串切片輸出到控制檯。讓我們一起學習示例和演算法,以更清楚地瞭解這個概念。

語法

regex.MustCompile()

Go 標準庫中的 regexp 包包含一個名為 MustCompile() 的函式,它將正則表示式模式轉換為 regexp.結構體,其中包含正則表示式。然後,可以使用 FindAllString()、FindString() 和 ReplaceAllString() 等函式使用此結構體與其他字串進行比較()。MustCompile() 是一個實用函式,如果表示式無法解析,它會引發恐慌幷包裝 Compile() 函式。

演算法

  • 步驟 1 − 建立一個包 main 並宣告 fmt(格式化包)和 regexp 包在程式中,其中 main 生成可執行示例,而 fmt 幫助格式化輸入和輸出。

  • 步驟 2 − 建立一個函式 main,並在該函式中使用 regexp.MustCompile 函式建立一個正則表示式物件,該物件匹配每個單詞的首字母。

  • 步驟 3 − 使用正則表示式物件上的 FindAllString 函式來查詢輸入字串中正則表示式的每個例項。

  • 步驟 4 − 將 FindAllString 函式的輸出儲存在一個名為 print_firstletter 的變數中。

  • 步驟 5 − 使用 fmt.Println 方法將結果字串切片列印到控制檯。

  • 步驟 6 − 此演算法使用正則表示式打印出與輸入字串的首字母匹配的所有單詞。

示例

package main
import (
   "fmt"
   "regexp"
)

func main() {
   mystr := "Hello, alexa!" //create a string
   fmt.Println("The inital value of string is:", mystr)
   reg := regexp.MustCompile("\b[a-zA-Z]") //create a regular expression object
   print_firstletter := reg.FindAllString(mystr, -1)
   fmt.Println("The first letter of each word is:")
   fmt.Println(print_firstletter)  //print first letter of each word
}

輸出

The inital value of string is: Hello, alexa!
The first letter of each word is:
[]

方法 2:使用 strings.Field() 函式

在這種方法中,我們使用 fields 函式,輸入字串使用 for 迴圈逐詞迭代。它使用字串索引在迴圈內列印每個單詞的首字母。讓我們一起學習示例和演算法,以瞭解其執行過程。

語法

strings.Fields()

Golang 函式 fields() 用於根據空格將字串切片成多個子字串。此方法返回的切片包含原始文字中所有由空格字元分隔的子字串(空格、製表符和換行符)。此操作不會更改原始字串。

演算法

  • 步驟 1 − 建立一個包 main 並宣告 fmt(格式化包)和 strings 包在程式中,其中 main 生成可執行示例,而 fmt 幫助格式化輸入和輸出。

  • 步驟 2 − 建立一個函式 main,並在該函式中建立一個名為 mystr 的字串變數,該變數儲存輸入值。

  • 步驟 3 − 使用 strings.Fields() 將輸入字串切片成單詞,並使用 for 迴圈迭代這些單詞。

  • 步驟 4 − 在迴圈內使用字串索引檢索當前單詞的首字母。

  • 步驟 5 − 使用 fmt.Println() 函式列印單詞的首字母,其中 ln 表示換行。

  • 步驟 6 − 再次對每個單詞執行步驟 4-6。

  • 步驟 7 − 此演算法迴圈遍歷輸入字串中的單詞,並在每次迭代後列印每個單詞的首字母。它更節省記憶體,並且不使用正則表示式。

示例

在本例中,我們將學習如何使用 strings.Field() 函式列印每個單詞的首字母。

package main
import (
   "fmt"
   "strings"
)

func main() {
   mystr := "Hello, alexa!"   //create a string 
   fmt.Println("The string created here is:", mystr)
   words := strings.Fields(mystr) //use the built-in function to separate the string into words
   fmt.Println("The initial character of the mystr is:")
   for _, word := range words {
      fmt.Print(string(word[0])) //print the first letter of each word
   }
}

輸出

The string created here is: Hello, alexa!
The initial character of the mystr is:
Ha

結論

我們執行了以上兩個示例的列印每個單詞首字元的程式。在第一個示例中,我們使用了 regex.MustCompile 函式,在第二個示例中,我們使用了 strings.Fields() 函式。這兩個程式都提供了類似的輸出。

更新於:2023 年 2 月 20 日

442 次瀏覽

開啟您的 職業生涯

透過完成課程獲得認證

立即開始
廣告