46 lines
813 B
Go
46 lines
813 B
Go
|
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))
|
||
|
}
|