golang 中文英文混合按字节截取

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
}

  

posted @ 2020-09-15 19:06  zipon  阅读(340)  评论(0)    收藏  举报