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))
}
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))
}
- 2 回答
- 0 关注
- 199 浏览
添加回答
举报