golang 生成文章简介

文章目录

    主要是为了用 golang 生成文章简介,及 html description 标签的内容。

    逻辑

    • 去除 html tag
    • 取前 N 个字符 (160 个字母,或 80 个中文字符)

    HTML StripTags for Go, 去除 HTML 标签

    https://github.com/grokify/html-strip-tags-go

    go get github.com/grokify/html-strip-tags-go
    

    使用方法

    import(
        strip "github.com/grokify/html-strip-tags-go" 
    )
    
    func main() {
        original := "<h1>Hello World</h1>"
        stripped := strip.StripTags(original) // => "Hello World"
    }
    

    最终代码

    // 文章概要
    func (article *Article) GenDescription() string {
    	return FirstNChars(strip.StripTags(article.Content), 80)
    }
    
    // 字符串的前 N 个字符
    // fmt.Println(firstN2("世界 Hello", 1)) 	// 世
    func FirstNChars(s string, n int) string {
    	r := []rune(s)
    	if len(r) > n {
    		return string(r[:n])
    	}
    	return s
    }
    

    golang 中 rune, byte 与 char 的区别

    • golang 中没有 char 类型,只有 byte 和 rune 来表示字符
    • byte 是 uint8 的别名;rune 是 int32 的别名
    • byte 用来表示 ASCII 字符;rune 则可以表示 Unicode 所有的字符
    • var letter = ‘R’ 默认是 rune 类型;需要定义成 byte 需 var letter byte = ‘B’
    • 对 string 进行 for range 操作,得到的每一个 item 都是 rune
    • 对 string 进行 for len 操作,得到的是每一个 byte,而不是 rune

    参考:


    Strings, bytes, runes and characters in Go

    关于作者 🌱

    我是来自山东烟台的一名开发者,有感兴趣的话题,或者软件开发需求,欢迎加微信 zhongwei 聊聊,或者关注我的个人公众号“大象工具”, 查看更多联系方式