beego截取中文无乱码以及统计中文字符串长度

2014-12-08 10:18 来源:www.chinab4c.com 作者:golang专家

   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