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 關注
- 143 瀏覽
添加回答
舉報