使用正则表达式打印每个单词首字母的 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 次浏览

开启您的 职业生涯

通过完成课程获得认证

立即开始
广告