3 回答
TA贡献1818条经验 获得超8个赞
当您将单词用作地图键时,您应该将它们转换为小写
for _, word := range words {
fregs[strings.ToLower(word)] += 1
}
TA贡献1765条经验 获得超5个赞
我得到 [a:822 a.:110 我想要所有的 a 都一样。ia如何更改代码以便a和a。是一样的吗?– 你好123
您需要仔细定义一个词。例如,将一串连续的字母和数字转换为小写。
func WordCount(s string) map[string]int {
wordFunc := func(r rune) bool {
return !unicode.IsLetter(r) && !unicode.IsNumber(r)
}
counts := make(map[string]int)
for _, word := range strings.FieldsFunc(s, wordFunc) {
counts[strings.ToLower(word)]++
}
return counts
}
TA贡献1770条经验 获得超3个赞
要删除所有非单词字符,您可以使用正则表达式:
package main
import (
"bufio"
"fmt"
"log"
"regexp"
"strings"
)
func main() {
str1 := "This is some text! I want to count each word. Is it cool?"
re, err := regexp.Compile(`[^\w]`)
if err != nil {
log.Fatal(err)
}
str1 = re.ReplaceAllString(str1, " ")
scanner := bufio.NewScanner(strings.NewReader(str1))
scanner.Split(bufio.ScanWords)
for scanner.Scan() {
fmt.Println(strings.ToLower(scanner.Text()))
}
}
- 3 回答
- 0 关注
- 107 浏览
添加回答
举报