我试图在 Google 上搜索文件和字符串之间的模式匹配函数,但找不到。我也尝试过使用 strings.Contains()
,但它在大输入文件中给出了错误的结果。
Go 有没有在某个文件中搜索字符串的函数?
如果没有,是否有其他方法可以解决这个问题?
这是我的代码:
package main
import (
"bufio"
"fmt"
"io/ioutil"
"os"
"strings"
)
func main() {
reader := bufio.NewReader(os.Stdin)
fmt.Print("Enter text: ")
text, _ := reader.ReadString('\n')
// read the whole file at once
b, err := ioutil.ReadFile("input.txt")
if err != nil {
panic(err)
}
s := string(b)
length := len(s)
//check whether s contains substring text
fmt.Println(strings.Contains(s, text))
}
最佳答案
如果我正确地阅读了你的问题,你想从文件中读取并确定在命令行输入的字符串是否在该文件中......我认为你看到的问题与字符串分隔符有关, reader.ReadString('\n')
位,而不是 string.Contains()
。
在我看来,使用 fmt.Scanln
可以更容易地实现您想要的功能;它会简化事情并返回一个结果,我很确定这是你想要的。试试你的代码的这个变体:
package main
import (
"fmt"
"io/ioutil"
"strings"
)
func main() {
var text string
fmt.Print("Enter text: ")
// get the sub string to search from the user
fmt.Scanln(&text)
// read the whole file at once
b, err := ioutil.ReadFile("input.txt")
if err != nil {
panic(err)
}
s := string(b)
// //check whether s contains substring text
fmt.Println(strings.Contains(s, text))
}
关于go - 如何检查文件是否包含字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37194739/