golang 生成文章简介

更新日期: 2022-04-14 阅读次数: 849 字数: 294 分类: 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

爱评论不评论