29 lines
609 B
Go
29 lines
609 B
Go
package wordcount
|
|
|
|
import (
|
|
"regexp"
|
|
"strings"
|
|
)
|
|
|
|
// TestVersion is an exercism thing
|
|
const TestVersion = 1
|
|
|
|
// Frequency is the return type
|
|
type Frequency map[string]int
|
|
|
|
// WordCount returns how many of each word in 'phrase'
|
|
func WordCount(phrase string) Frequency {
|
|
ret := make(Frequency)
|
|
words := strings.Split(phrase, " ")
|
|
cleanUp, _ := regexp.Compile("[^A-Za-z0-9]")
|
|
for _, v := range words {
|
|
// The test cases assume that we're stripping non-alphanumeric runes
|
|
// and making it lower case
|
|
v = strings.ToLower(cleanUp.ReplaceAllString(v, ""))
|
|
if v != "" {
|
|
ret[v]++
|
|
}
|
|
}
|
|
return ret
|
|
}
|