用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())
}
广告
将在 10 秒后关闭
bannerAds