使用Golang,如何读取2个字符之间的文件内容
所以我真的很想学围棋,然而围棋是一门比我想象的更难、更令人困惑的语言。我的目标是编写一个程序来编辑dns文件。第一步是打开一个文件并将其读入内存。好的,这可以通过ioutil.Readfile轻松完成。因此,我需要做的下一件事是只阅读SOA,或者直到遇到“)”为止。我到底要怎么做?以下是文件的外观:使用Golang,如何读取2个字符之间的文件内容,go,Go,所以我真的很想学围棋,然而围棋是一门比我想象的更难、更令人困惑的语言。我的目标是编写一个程序来编辑dns文件。第一步是打开一个文件并将其读入内存。好的,这可以通过ioutil.Readfile轻松完成。因此,我需要做的下一件事是只阅读SOA,或者直到遇到“)”为止。我到底要怎么做?以下是文件的外观: example.com. SOA dns1.example.com. hostmaster.example.com. ( 2001062501 ; serial
example.com. SOA dns1.example.com. hostmaster.example.com. (
2001062501 ; serial
21600 ; refresh after 6 hours
3600 ; retry after 1 hour
604800 ; expire after 1 week
86400 ) ; minimum TTL of 1 day
理想情况下,该程序将以包含“SOA”的行开始,以“)”结束,并同时识别“;”。我应该从哪里开始呢 实现完全控制的一种方法是使用
text/scanner
以下是您的案例示例:
否则,您可以使用正则表达式来匹配特定的行Go中词汇扫描的有趣入门。虽然你可能可以做一些简单的事情,但它会告诉你从哪里开始。
package main
import (
"fmt"
"strings"
)
import "text/scanner"
var dnsRecord = `example.com. SOA dns1.example.com. hostmaster.example.com. (
2001062501 ; serial
21600 ; refresh after 6 hours
3600 ; retry after 1 hour
604800 ; expire after 1 week
86400 ) ; minimum TTL of 1 day
`
func main() {
var s scanner.Scanner
s.Init(strings.NewReader(dnsRecord))
tok := s.Scan()
for tok != scanner.EOF {
// do something with tok
tok = s.Scan()
fmt.Println(s.TokenText())
}
}