国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Golang > 正文

Golang中文字符串截取函數實現原理

2020-04-01 18:58:30
字體:
來源:轉載
供稿:網友

在golang中可以通過切片截取一個數組或字符串,但是當截取的字符串是中文時,可能會出現的問題是:由于中文一個字不只是由一個字節組成,所以直接通過切片可能會把一個中文字的編碼截成兩半,結果導致最后一個字符是亂碼。

例如:

想要截取前四個字

name := "我是胡八一"fmt.Println("name[:4] = ",name[:4])

執行后得到的結果會是這樣的:

name[:4] = 我?

解決方法:
先將其轉為[]rune,再截取后,轉會string

nameRune := []rune(name)fmt.Println("string(nameRune[:4]) = ",string(nameRune[:4]))

運行結果:

string(nameRune[:4]) =  我是胡八

好了弄懂了原理我們來寫一個完整的Golang中文字符串截取函數

func SubString(str string, begin, length int) string {  fmt.Println("Substring =", str)  rs := []rune(str)  lth := len(rs)  fmt.Printf("begin=%d, end=%d, lth=%d/n", begin, length, lth)  if begin < 0 {    begin = 0  }  if begin >= lth {    begin = lth  }  end := begin + length  if end > lth {    end = lth  }  fmt.Printf("begin=%d, end=%d, lth=%d/n", begin, length, lth)  return string(rs[begin:end])}

實現Golang中文字符串截取函數很簡單利用golang原理語句就可實現


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 安乡县| 改则县| 卢龙县| 鹤壁市| 秦安县| 富平县| 华阴市| 五指山市| 六安市| 蓬溪县| 东光县| 湘潭市| 申扎县| 榆树市| 克东县| 澄迈县| 武宣县| 堆龙德庆县| 东乡县| 望谟县| 连州市| 孝感市| 丰县| 龙口市| 探索| 齐齐哈尔市| 阿拉善左旗| 达州市| 手机| 枣强县| 福泉市| 黔西| 海伦市| 永年县| 蓝田县| 平阴县| 申扎县| 隆德县| 苏州市| 新巴尔虎左旗| 筠连县|