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 show_substr_reverse(s string, l int) string { if len(s) <= l { return s } ss, sl, rl, rs := "", 0, 0, []rune(s) for i:=len(rs)-1;i>=0;i-- { r := rs[i] rint := int(r) if rint < 128 { rl = 1 } else { rl = 2 } if sl + rl > l { break } sl += rl ss = string(r) + ss } return ss } #正序截取 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 }