使用Go语言优雅地统计单词个数

yeleven · · 1243 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

type WordCounter int

func (c *WordCounter) Write(p []byte) (int, error) {
    scanner := bufio.NewScanner(bytes.NewReader(p))
    // set the split function for the scanning operation
    scanner.Split(bufio.ScanWords)
    // Count the words
    count := 0
    for scanner.Scan() {
        count++
    }
    if err := scanner.Err(); err != nil {
        return -1, err
    }
    *c += WordCounter(count)
    return len(p), nil
}

func main() {
    input := "Spicy jalapeno pastrami ut ham turducken.\n Lorem sed ullamco, leberkas sint short loin strip steak ut shoulder shankle porchetta venison prosciutto turducken swine.\n Deserunt kevin frankfurter tongue aliqua incididunt tri-tip shank nostrud.\n"

    var c WordCounter
    _, err := fmt.Fprintf(&c, "%s", input)
    if nil != err {
        log.Fatal(err)
    }
    fmt.Println(c)  // 32

}

有疑问加站长微信联系(非本文作者)

本文来自:51CTO博客

感谢作者:yeleven

查看原文:使用Go语言优雅地统计单词个数

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1243 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传