func UnicodeIndex(str,substr string) int { // 子串在字符串的字节位置 result := strings.Index(str,substr) if result >= 0 { // 获得子串之前的字符串并转换成[]byte prefix := []byte(str)[0:result] // 将子串之前的字符串转换成[]rune rs := []rune(string(prefix)) // 获得子串之前的字符串的长度,便是子串在字符串的字符位置 result = len(rs) return result

注意,这里用的是string.Index函数,类似的,也可以写中文字符串的类似strings中的IndexAny,LastIndex等函数

同样的思想,我也写了一个截取中文字符串的函数,如下:

func SubString(str string,begin,length int) (substr string) {
  // 将字符串的转换成[]rune
  rs := []rune(str)
  lth := len(rs)
  // 简单的越界判断
  if begin < 0 {
    begin = 0
  if begin >= lth {
    begin = lth
  end := begin + length
  if end > lth {
    end = lth 
  // 返回子串
  return string(rs[begin:end])
如有错误,欢迎指正。
 最高记录 4172 ©2013-2019 studygolang.com Go语言中文网,中国 Golang 社区,致力于构建完善的 Golang 中文社区,Go语言爱好者的学习家园。 Powered by StudyGolang(Golang + MySQL)  • · CDN 采用 七牛云 VERSION: V3.5.0 · 39.262272ms · 为了更好的体验,本站推荐使用 Chrome 或 Firefox 浏览器