beego截取中文无乱码以及统计中文字符串长度,我们在使用beego中难免遇到截取中文字符串,用默认的golang字符串截取中文,或者统计中文长度容易出错。我们就自己扩展beego函数,来实现beego截取中文无乱码以及统计中文字符串长度.
1:beego中文截取
func show_substr(s string, l int) string {
if len(s) <= l {
return s
}
ss, sl, rl, rs := "", 0, 0, []rune(s)
for _, r := range rs {
rint := int(r)
if rint < 128 {
rl = 1
} else {
rl = 2
}
if sl + rl > l {
break
}
sl += rl
ss += string(r)
}
return ss
}
2:beego中文长度计算
func show_strlen(s string) int {
sl := 0
rs := []rune(s)
for _, r := range rs {
rint := int(r)
if rint < 128 {
sl++
} else {
sl += 2
}
}
return sl
}
使用方法
func main() {
fmt.Println(show_strlen("哈哈1"))
fmt.Println(show_substr("哈哈1什1么的", 9))
}
来源:http://www.chinab4c.com