主要是为了用 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 聊聊, 查看更多联系方式