亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在 GO 中將字符串轉換為小寫?

如何在 GO 中將字符串轉換為小寫?

Go
aluckdog 2022-11-28 10:30:51
我是 GO 語言的新手,正在做一項作業,我應該編寫一個代碼來返回文本的詞頻。但是我知道單詞“Hello”、“HELLO”和“hello”都算作“hello”,所以我需要將所有字符串轉換為小寫。我知道我應該使用 strings.ToLower(),但是我不知道我應該把它包括在課堂上的什么地方。有人可以幫幫我嗎?package mainimport (    "fmt"    "io/ioutil"    "log"    "strings"    "time")const DataFile = "loremipsum.txt"// Return the word frequencies of the text argument.func WordCount(text string) map[string]int {    fregs := make(map[string]int)    words := strings.Fields(text)    for _, word := range words {        fregs[word] += 1    }    return fregs}// Benchmark how long it takes to count word frequencies in text numRuns times.//// Return the total time elapsed.func benchmark(text string, numRuns int) int64 {    start := time.Now()    for i := 0; i < numRuns; i++ {        WordCount(text)    }    runtimeMillis := time.Since(start).Nanoseconds() / 1e6    return runtimeMillis}// Print the results of a benchmarkfunc printResults(runtimeMillis int64, numRuns int) {    fmt.Printf("amount of runs: %d\n", numRuns)    fmt.Printf("total time: %d ms\n", runtimeMillis)    average := float64(runtimeMillis) / float64(numRuns)    fmt.Printf("average time/run: %.2f ms\n", average)}func main() {    // read in DataFile as a string called data    data, err:= ioutil.ReadFile("loremipsum.txt")      if err != nil {        log.Fatal(err)        }        // Convert []byte to string and print to screen    text := string(data)    fmt.Println(text)        fmt.Printf("%#v",WordCount(string(data)))    numRuns := 100    runtimeMillis := benchmark(string(data), numRuns)    printResults(runtimeMillis, numRuns)}
查看完整描述

3 回答

?
弒天下

TA貢獻1818條經驗 獲得超8個贊

當您將單詞用作地圖鍵時,您應該將它們轉換為小寫


for _, word := range words {

        fregs[strings.ToLower(word)] += 1

    }


查看完整回答
反對 回復 2022-11-28
?
POPMUISE

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

}


查看完整回答
反對 回復 2022-11-28
?
德瑪西亞99

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()))

    }

}


查看完整回答
反對 回復 2022-11-28
  • 3 回答
  • 0 關注
  • 143 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號