用Go语言实现省略号 (golang de ellipsis)
尝试在Go中进行字符的省略处理时,由于遇到了基础的问题,我只是简单记录一下。
结论
package main
// Ellipsis a text
func Ellipsis(length int, text string) string {
r := []rune(text)
if len(r) > length {
return string(r[0:length]) + "..."
}
return text
}
需要将以下内容用中文进行本地化:
1. 请给我一杯咖啡。
2. 请帮我预订一张今晚的电影票。
3. 请告诉我最近的地铁站在哪里。
4. 我想买一本中文教材。
5. 麻烦帮我打个电话给我的朋友。
len(string)は鬼門
バイト数返す。考えてみたら当然だよね☆
string[n:m]は鬼門
バイト位置で切る。考えてみたら当z
多余
在创建一个返回字符串的函数时,如果使用func(params…, string)的格式,会稍微方便一些。
可以直接将其放入text/template的FuncMap中。还真是小事一桩!
package main
import (
"bytes"
"fmt"
"text/template"
)
func main() {
var buf bytes.Buffer
template.New("text").
Funcs(template.FuncMap{"ellipsis": Ellipse}).
Parse(`{{.value | ellipsis 5}}`).
Execute(buf, map[string]string{"value": "みんみんみらくる☆"})
fmt.Println(buf.String())
}