用golang截取字符串時需要用到string
包, 通過將字符串轉為[]byte
類型進行切片並用string
轉為截取完的字符串結果
// 截取字符串前三位 str := "fidding" str = string([]byte(str)[:3]) // 結果為 "fid" fmt.Println(str)
[startIndex:endIndex]
使用的是半開半閉區間(左邊為閉,右邊為開),即startIndex<=n<endIndex
不要以為這樣就解決了字符串截取問題,當遇到中文時,上面的代碼便行不通了,因為中文在golang是3個字符。
這時候就需要用到另外一個類型rune
,使用時不考慮unicode字節,即一個中文只占一個數組下標
將上面的代碼修改如下:
// 截取字符串前三位 str := "你好fidding" str = string([]rune(str)[0:3]) // 結果為 "你好f" fmt.Println(str)
golang
的切片[:]
並不能使用形如[:-1]
這樣的反向切片,當遇到截取字符串后三位時,就需要先計算字符串長度再去換算
// 截取字符串后三位 str := "fidding你好" str = string([]rune(str)[len([]rune(str))-3:]) // 結果為 "g你好" fmt.Println(str)