Go
golang

Goでマルチバイトが混在した文字列をtruncateする

More than 3 years have passed since last update.

Goで日本語混じりのstringをそのままtruncateすると[]byteとして切りだされるのでお察しの通りになる。

s := "ああaaああ"

// 5文字目まで切りたい
fmt.Println(s[0:5]) //=> あ��

[]rune[]int32のalias)に変換してから必要なぶんを切り出してstringにキャストすればよい。

s := "ああaaああ"

r := []rune(s)

// 5文字目まで切りたい
fmt.Println(string(r[0:5])) //=> ああaaあ

http://play.golang.org/p/pc_pcCZSHa