go 语言处理token方法
时间: 2024-01-17 21:05:30 浏览: 143
Go语言中处理token有以下几种方法:
1. 使用strings包的Split()函数来将字符串按照指定的分隔符分割成多个子串,得到一个字符串切片,每个元素代表一个token。
例如,以下代码将字符串按照空格分割成多个单词:
```
package main
import (
"fmt"
"strings"
)
func main() {
str := "Hello world Go"
tokens := strings.Split(str, " ")
for _, token := range tokens {
fmt.Println(token)
}
}
```
输出:
```
Hello
world
Go
```
2. 使用bufio包的Scanner类型,可以逐个读取输入流中的token。Scanner会将输入流按照默认的分隔符(空格、换行、制表符等)分割成多个token。
例如,以下代码从标准输入读取多个单词,直到遇到EOF:
```
package main
import (
"bufio"
"fmt"
"os"
)
func main() {
scanner := bufio.NewScanner(os.Stdin)
for scanner.Scan() {
token := scanner.Text()
fmt.Println(token)
}
if err := scanner.Err(); err != nil {
fmt.Fprintln(os.Stderr, "reading input:", err)
}
}
```
3. 使用正则表达式库regexp包来匹配字符串中的token。可以定义一个正则表达式来匹配token的格式,然后用FindAllString()函数找出所有匹配的字符串。
例如,以下代码使用正则表达式匹配所有的数字:
```
package main
import (
"fmt"
"regexp"
)
func main() {
str := "123 abc 456 def 789"
re := regexp.MustCompile(`\d+`)
tokens := re.FindAllString(str, -1)
for _, token := range tokens {
fmt.Println(token)
}
}
```
输出:
```
123
456
789
```
阅读全文