Golang程序 使用regex打印每个单词的第一个字母
一串被称为正则表达式(regex或regexp)的字符创建了一个搜索模式。正则表达式经常被用来进行字符串匹配,有时被称为 “查找和替换”,或用字符串进行模式匹配。输入验证、解析和其他任务也可以使用它们。正则表达式使用特殊字符和元字符来指定要匹配的模式,它们的语法在不同的计算机语言之间有很大不同。让我们看看不同的Golang例子来清楚地了解这个概念。
方法1:使用regex.MustCompile()函数
在这个例子中,我们将看到如何使用regex.MustCompile()函数打印每个单词的首字母。这个程序使用regexp库创建了一个匹配每个单词首字母的正规表达式。使用FindAllString方法在输入字符串中搜索每一个与之匹配的正则表达式实例,并将得到的字符串片断报告给控制台。让我们通过实例:和算法来清楚地了解这个概念。
语法
regex.MustCompile()
Go标准库的regexp包包含一个名为MustCompile()的函数,可以将正则表达式模式转换为regexp.结构与regex。然后,使用FindAllString()、FindString()和ReplaceAllString等函数,这个结构可以用来与其他字符串进行比较()。如果表达式不能被解析,一个方便的函数MustCompile()会惊慌失措,并包裹Compile()函数。
算法
- 第1步 – 创建一个包main,并在程序中声明fmt(格式包)和regexp包,其中main产生可执行的Example:s,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:
[H a]
方法2:使用strings.Field()函数
在这个方法中,我们使用字段函数,输入的字符串用for循环分成一个字一个字的迭代。它使用字符串索引来打印循环内每个单词的第一个字母。让我们通过例题:和算法来看看它的执行情况。
语法
strings.Fields()
Golang函数fields()是用来将一个字符串根据空格切成许多子串的。原始文本中所有被空白字符分隔的子串都包含在这个方法返回的切片中(空格、制表符和换行符)。这个动作不会改变原始字符串。
算法
- 第1步 – 创建一个包main,并在程序中声明fmt(格式包)和strings包,其中main产生可执行的Example:s,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()函数。这两个程序的输出结果相似。