给定一篇英语文章,要求统计出所有单词的个数,并按一定次序输出。思路是利用go语言的map类型,以每个单词作为关键字存储数量信息,代码实现如下:
package main
import ( "fmt" "sort" ) func wordCounterV1(str string) { /*定义变量*/ stringSlice := str[:] temp := str[:] wordStatistic := make(map[string]int) /*把所有出现的单词放入map中*/ j := 0 for i := 0; i < len(stringSlice); i++ { if !((stringSlice[i] >= 65 && stringSlice[i] <= 90) || (stringSlice[i] >= 97 && stringSlice[i] <= 122)) { temp = str[j:i] if len(temp) != 0 { wordStatistic[temp]++ } j = i + 1 } } /*把首字母为大写的单词转换为小写;去除无效字符*/ for i := range wordStatistic { if len(i) > 1 { if (i[0] >= 65 && i[0] <= 90) && (i[1] <= 65 || i[1] >= 90) { strTemp := make([]byte, len(i), len(i)) copy(strTemp, i) strTemp[0] += 32 wordStatistic[string(strTemp)] += wordStatistic[i] delete(wordStatistic, i) } } else { if i[0] != 'a' && i[0] != 'A' { delete(wordStatistic, i) } else if i[0] == 'A' { wordStatistic["a"] += wordStatistic[i] delete(wordStatistic, i) } } } /*把map的关键字映射到string切片进行排序*/ sortSlice := make([]string, 0, len(wordStatistic)) for i := range wordStatistic { sortSlice = append(sortSlice, i) } sort.Strings(sortSlice) /*输出结果*/ for _, v := range sortSlice { fmt.Printf("%s:%d\n", v, wordStatistic[v]) } fmt.Printf("word count:%d\n", len(wordStatistic)) }
主函数随便输入一篇英语文章
func main() { str := ` There are moments in life when you miss someone so much that you just want to pick them from your dreams and hug them for real! Dream what you want to dream;go where you want to go;be what you want to be,because you have only one life and one chance to do all the things you want to do. May you have enough happiness to make you sweet,enough trials to make you strong,enough sorrow to keep you human,enough hope to make you happy"htmlcode">C:\Users\24213\go project>cd src\github.com\go-study\lesson6\practice1 C:\Users\24213\go project\src\github.com\go-study\lesson6\practice1>go build C:\Users\24213\go project\src\github.com\go-study\lesson6\practice1>practice1 a:4 all:1 along:1 always:2 and:8 another:1 appreciate:2 are:2 around:2 bad:1 based:1 be:3 because:1 begins:1 best:1 born:1 brighten:1 brighter:1 brightest:1 can:2 chance:1 comes:1 cry:1 crying:2 day:1 die:1 do:2 don:3 down:1 dream:2 dreams:1 ends:1 enough:4 everyone:2 everything:2 failures:1 feel:1 for:3 forgotten:1 friendship:1 from:1 future:1 go:4 grows:1 happen:1 happiest:1 happiness:2 happy:1 have:7 heartaches:1 hope:1 hug:1 human:1 hurt:1 hurts:2 if:2 importance:1 in:4 is:2 it:3 just:3 keep:1 kiss:1 know:1 let:2 lies:1 life:5 live:1 lives:1 love:1 make:6 may:1 mean:1 message:2 miss:2 moments:1 most:1 much:1 necessarily:1 need:1 nothing:1 of:6 on:3 one:4 only:2 opportunity:1 or:1 other:1 others:1 out:1 past:2 people:3 person:1 pick:1 please:1 probably:1 put:1 re:1 real:1 really:2 searched:1 see:1 send:1 shoes:1 side:1 smile:2 smiling:2 so:2 someone:2 something:1 sorrow:1 strong:1 sweet:1 tear:1 that:6 the:10 their:3 them:3 there:1 they:2 things:2 this:2 those:9 to:19 too:1 touched:2 trials:1 tried:1 until:1 want:6 was:1 way:2 well:1 were:2 what:2 when:5 where:1 who:10 will:3 with:4 worry:1 you:32 your:4 yourself:1 word count:144总结
以上所述是小编给大家介绍的go语言之给定英语文章统计单词数量(go语言小练习),希望对大家有所帮助!
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
暂无评论...
更新日志
2024年05月20日
2024年05月20日
- 林一峰2017-绝对清白2CD[香港首版][WAV+CUE
- 石凯《数星一整夜》[320K/MP3][44.18MB]
- 石凯《数星一整夜》[24bit 48kHz][FLAC/分轨][395.49MB]
- 邰正宵《重燃爱恋 贰 Walk On》[320K/MP3][158.71MB]
- 林一峰2003-床头歌[华纳][WAV+CUE]
- 张琍敏1983-又见牵手[台湾留声复刻版][WAV+CUE]
- 张琍敏1978-雪中莲[台湾复刻版][WAV+CUE]
- 叶蕴仪1993-睡美人[日本版][WAV+CUE]
- 夜晚助兴音乐-群星《新时代床头音乐-性能量》2CD[WAV]
- 24K德国HD金碟《历届奥斯卡获奖金曲》3CD[WAV整轨]
- 邰正宵《重燃爱恋 贰 Walk On》[FLAC/分轨][431.72MB]
- 苏文劭《雨停出来走走》[320K/MP3][81.11MB]
- 苏文劭《雨停出来走走》[FLAC/分轨][210.76MB]
- 群星《2024好听新歌04》十倍音质WAV分轨
- 陈宁《弹指之间HQ》头版限量[低速原抓WAV+CUE]