import "utf8"

UTF-8エンコードされたテキストをサポートする関数および定数です。このパッケージでは「Unicode文字」のことを「ルーン」と呼んでいます。

パッケージファイル

string.go utf8.go

定数

エンコーディングに関する基本的な値です。

const (
    RuneError = unicode.ReplacementChar // エラーを表すルーンで、"replacement character"
    RuneSelf  = 0x80                    // Runeselfより小さい値は1バイト長のルーン
    UTFMax    = 4                       // UTF-8エンコードされたUnicode文字の最大バイト長
)

DecodeLastRune関数

func DecodeLastRune(p []byte) (rune, size int)

DecodeLastRuneは、p内の最後のUTF-8エンコードされた文字をデコードし、そのルーンと使用バイト数を返します。

DecodeLastRuneInString関数

func DecodeLastRuneInString(s string) (rune, size int)

DecodeLastRuneInStringは、DecodeLastRuneと同じですが、入力は文字列です。

DecodeRune関数

func DecodeRune(p []byte) (rune, size int)

DecodeRuneは、パラメータpの最初のUTF-8エンコード一文字をルーンに変換し、バイト長とともに返します。

DecodeRuneInString関数

func DecodeRuneInString(s string) (rune, size int)

DecodeRuneInString は、DecodeRuneと同じですが、入力パラメータは文字列です。

EncodeRune関数

func EncodeRune(p []byte, rune int) int

EncodeRuneは、ルーンをUTF-8エンコードでパラメータp(充分なサイズが必要)に書き込みます。この関数は書き込んだバイト数を返します。

FullRune関数

func FullRune(p []byte) bool

FullRuneは、パラメータpのバイト列が、ルーンの完全なUTF-8エンコーディングで始まっているかどうかを返します。エンコーディングが不正なときは、サイズ-1のエラールーンとみなされるために完全なルーンであると判断されます。

FullRuneInString関数

func FullRuneInString(s string) bool

FullRuneInStringは、FullRuneと同じですが、入力パラメータは文字列です。

RuneCount関数

func RuneCount(p []byte) int

RuneCountは、パラメータp内のルーン数を返します。エラーや欠落したエンコードは1バイトのルーンとしてカウントされます。

RuneCountInString関数

func RuneCountInString(s string) (n int)

RuneCountInStringは、RuneCountと同じですが、入力パラメータは文字列です。

RuneLen関数

func RuneLen(rune int) int

RuneLenは、ルーンのエンコードに必要なバイト数を返します。

RuneStart関数

func RuneStart(b byte) bool

RuneStartは、パラメータbで指定した1バイトが、ルーンの先頭1バイトと成り得るか判断します。2番目または、それ以降のバイトデータは先頭2ビットは常に”10″です。

String型

Stringは、通常のstringをラップし、バイトによるインデックス指定の代わりに、コードポイントによる効率の良いインデックス指定を提供する小さい構造体です。前または後方向に順次スキャンする際のコストはインデックス操作につきO(1)です。(ですが、range節ほどは早くありません) ランダムアクセスのコストは、文字列の長さO(N)ですが、そのオーバヘッドは、先頭からスキャンするよりは、常に小さくはなります。文字列がASCIIのときのランダムアクセスのコストはO(1)です。言語に組み込まれているstring型とは異なり、Stringの内部状態は変更可能で、かつスレッドセーフではありません。

type String struct {
    // contains unexported fields
}

NewString関数

func NewString(contents string) *String

NewStringは、提供されたcontentsを持つUTF-8文字列を作成します。

(*String) At関数

func (s *String) At(i int) int

Atは、String内のインデックスiのルーンを返します。ルーンの順番は、内容を「for range」節で繰り返したときと同じです。

(*String) Init関数

func (s *String) Init(contents string) *String

Initは、既存のStringに対し、提供されたcontentsを保持するよう初期化します。この関数は初期化されたStringのポインタを返します。

(*String) IsASCII関数

func (s *String) IsASCII() bool

IsASCIIは、Stringに含まれているのがASCIIバイトだけであるかを示す論理値を返します。

(*String) RuneCount関数

func (s *String) RuneCount() int

RuneCountは、String内のルーン(Unicodeコードポイント)数を返します。

(*String) Slice関数

func (s *String) Slice(i, j int) string

Sliceは、ルーンの位置[i:j]で文字列をスライスして返します。

(*String) String関数

func (s *String) String() string

Stringは、Stringの内容を返します。このメソッドの存在は、Stringがfmt.Printで直接出力できることを示しています。