diff --git a/.gitignore b/.gitignore index 176ae55..69a8700 100644 --- a/.gitignore +++ b/.gitignore @@ -31,3 +31,4 @@ w1d1ex2/w1d1ex2 go-cat2/go-cat2 lower-1line/lower-1line upper-words/upper-words +longest-word/longest-word diff --git a/longest-word/main.go b/longest-word/main.go new file mode 100644 index 0000000..0d88b67 --- /dev/null +++ b/longest-word/main.go @@ -0,0 +1,45 @@ +package main + +import "fmt" +import "io" +import "log" +import "os" +import "bufio" +import "strings" + +func longest(r io.Reader) string { + lw := "" + s := bufio.NewScanner(r) + s.Split(bufio.ScanWords) + for s.Scan() { + word := s.Text() + word = strings.ToLower(word) + word = strings.Replace(word, ".", "", -1) + word = strings.Replace(word, ",", "", -1) + word = strings.Replace(word, "\"", "", -1) + for _, word := range strings.Split(word, "—") { + if len(word) > len(lw) { + if !strings.HasPrefix(word, "http://") { + lw = word + } + } + } + } + return lw +} + +func openFile(path *string) *os.File { + f, err := os.Open(os.Args[1]) + if err != nil { + log.Fatalln(err) + } + return f +} +func main() { + if len(os.Args) <= 1 { + log.Fatalln("Missing file") + } + f := openFile(&os.Args[1]) + + fmt.Println(longest(f)) +}