やり方は色々あるけど、ずぼらな私は用意されているパッケージを使うことにしました。
前提のお話
- len(str)は、バイト長である。UTF-8の文字数ではない
- str[0:10]も、バイト単位での切り出しになる。UTF-8の文字切り出しには使えない
まずはgo get
$ go get golang.org/x/exp/utf8string
サンプル
import "golang.org/x/exp/utf8string"
〜〜〜
str1 := "ごーらんぐ"
str2 := utf8string.NewString(str1)
fmt.Println(str2.Slice(1, str2.RuneCount()))
結果
ーらんぐ
utf8string.NewString(string)関数
- utf8string.Stringインスタンスを生成する
utf8string.String#Slice(startIndex, endIndex)関数
- startIndexは切り出し開始位置
- endIndexは切り出し終了位置。endIndexは含まない
- よってstartIndex〜endIndex-1までの文字を切り出す
utf8string.String#RuneCount()関数
- UTF-8の文字数を返す
- ちなみにただ文字数を取得したいときは以下の関数を使うだけでOK
strlen := utf8.RuneCountInString("HOGE")