为了账号安全,请及时绑定邮箱和手机立即绑定

如何检查文件是否包含字符串?

如何检查文件是否包含字符串?

Go
小唯快跑啊 2022-01-10 15:11:28
我试图在谷歌上搜索文件和字符串之间的模式匹配功能,但我找不到它。我也尝试过使用strings.Contains(),但它在大输入文件中给出了错误的结果。Go 中是否有用于在某个文件中搜索字符串的功能?如果不是,是否有其他方法可以解决此问题?这是我的代码:package mainimport (    "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))}
查看完整描述

2 回答

?
互换的青春

TA贡献1797条经验 获得超6个赞

如果我正确阅读了您的问题,您想从文件中读取并确定在命令行中输入的字符串是否在该文件中......而且我认为您看到的问题与字符串分隔符有关,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))

}


查看完整回答
反对 回复 2022-01-10
?
蝴蝶不菲

TA贡献1810条经验 获得超4个赞

我只是添加一个标志来使用命令行参数。如果什么都没通过,它会提示你:)。


package main


import (

    "flag"

    "fmt"

    "io/ioutil"

    "strings"

)


//Usage go run filename -text=dataYouAreLookingfor

//if looking for Nissan in file the command will be

// go run filename -text=Nissan


func main() {

    var text string

    // use it as cmdline argument

    textArg := flag.String("text", "", "Text to search for")

    flag.Parse()

    // if cmdline arg was not passed ask

    if fmt.Sprintf("%s", *textArg) == "" {

        fmt.Print("Enter text: ")

        // get the sub string to search from the user

        fmt.Scanln(&text)

    } else {

        text = fmt.Sprintf("%s", *textArg)

    }

    // 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))

}


查看完整回答
反对 回复 2022-01-10
  • 2 回答
  • 0 关注
  • 199 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信