...

パッケージ strings

import "strings"
概要
目次

概要 ▾

strings パッケージは UTF-8 エンコードされた文字列を操作するシンプルな関数を提供します。

Go における UTF-8 文字列については,https://blog.golang.org/strings をご覧ください。

目次 ▾

func Compare(a, b string) int
func Contains(s, substr string) bool
func ContainsAny(s, chars string) bool
func ContainsRune(s string, r rune) bool
func Count(s, substr string) int
func EqualFold(s, t string) bool
func Fields(s string) []string
func FieldsFunc(s string, f func(rune) bool) []string
func HasPrefix(s, prefix string) bool
func HasSuffix(s, suffix string) bool
func Index(s, substr string) int
func IndexAny(s, chars string) int
func IndexByte(s string, c byte) int
func IndexFunc(s string, f func(rune) bool) int
func IndexRune(s string, r rune) int
func Join(a []string, sep string) string
func LastIndex(s, substr string) int
func LastIndexAny(s, chars string) int
func LastIndexByte(s string, c byte) int
func LastIndexFunc(s string, f func(rune) bool) int
func Map(mapping func(rune) rune, s string) string
func Repeat(s string, count int) string
func Replace(s, old, new string, n int) string
func ReplaceAll(s, old, new string) string
func Split(s, sep string) []string
func SplitAfter(s, sep string) []string
func SplitAfterN(s, sep string, n int) []string
func SplitN(s, sep string, n int) []string
func Title(s string) string
func ToLower(s string) string
func ToLowerSpecial(c unicode.SpecialCase, s string) string
func ToTitle(s string) string
func ToTitleSpecial(c unicode.SpecialCase, s string) string
func ToUpper(s string) string
func ToUpperSpecial(c unicode.SpecialCase, s string) string
func ToValidUTF8(s, replacement string) string
func Trim(s string, cutset string) string
func TrimFunc(s string, f func(rune) bool) string
func TrimLeft(s string, cutset string) string
func TrimLeftFunc(s string, f func(rune) bool) string
func TrimPrefix(s, prefix string) string
func TrimRight(s string, cutset string) string
func TrimRightFunc(s string, f func(rune) bool) string
func TrimSpace(s string) string
func TrimSuffix(s, suffix string) string
type Builder
    func (b *Builder) Cap() int
    func (b *Builder) Grow(n int)
    func (b *Builder) Len() int
    func (b *Builder) Reset()
    func (b *Builder) String() string
    func (b *Builder) Write(p []byte) (int, error)
    func (b *Builder) WriteByte(c byte) error
    func (b *Builder) WriteRune(r rune) (int, error)
    func (b *Builder) WriteString(s string) (int, error)
type Reader
    func NewReader(s string) *Reader
    func (r *Reader) Len() int
    func (r *Reader) Read(b []byte) (n int, err error)
    func (r *Reader) ReadAt(b []byte, off int64) (n int, err error)
    func (r *Reader) ReadByte() (byte, error)
    func (r *Reader) ReadRune() (ch rune, size int, err error)
    func (r *Reader) Reset(s string)
    func (r *Reader) Seek(offset int64, whence int) (int64, error)
    func (r *Reader) Size() int64
    func (r *Reader) UnreadByte() error
    func (r *Reader) UnreadRune() error
    func (r *Reader) WriteTo(w io.Writer) (n int64, err error)
type Replacer
    func NewReplacer(oldnew ...string) *Replacer
    func (r *Replacer) Replace(s string) string
    func (r *Replacer) WriteString(w io.Writer, s string) (n int, err error)
Bugs

パッケージファイル

builder.go compare.go reader.go replace.go search.go strings.go

func Compare 1.5

func Compare(a, b string) int

Compare は2つの文字列を辞書順で比較します。 a==b なら 0,a < b なら -1,a > b なら +1 を返します。

Compare はbytesパッケージとの対称性を保つために含められています。 ビルトインの文字列比較演算子 ==, <, > 等を使う方が見通しが良くなり, スピードも常に速くなります。

コード:

fmt.Println(strings.Compare("a", "b"))
fmt.Println(strings.Compare("a", "a"))
fmt.Println(strings.Compare("b", "a"))

出力:

-1
0
1

func Contains

func Contains(s, substr string) bool

Contains は s 中に substr が存在するかを返します。

コード:

fmt.Println(strings.Contains("seafood", "foo"))
fmt.Println(strings.Contains("seafood", "bar"))
fmt.Println(strings.Contains("seafood", ""))
fmt.Println(strings.Contains("", ""))

出力:

true
false
true
true

func ContainsAny

func ContainsAny(s, chars string) bool

ContainsAny は chars 中の Unicode コードポイントのいずれかが s 中に存在するかを返します。

コード:

fmt.Println(strings.ContainsAny("team", "i"))
fmt.Println(strings.ContainsAny("fail", "ui"))
fmt.Println(strings.ContainsAny("ure", "ui"))
fmt.Println(strings.ContainsAny("failure", "ui"))
fmt.Println(strings.ContainsAny("foo", ""))
fmt.Println(strings.ContainsAny("", ""))

出力:

false
true
true
true
false
false

func ContainsRune

func ContainsRune(s string, r rune) bool

ContainsRune は Unicode コードポイント r が s 中に存在するかを返します。

コード:

// 文字列に特定のUnicodeコードポイントが含まれるか確かめます。
// 例えば,小文字 "a" のコードポイントは 97 です。
fmt.Println(strings.ContainsRune("aardvark", 97))
fmt.Println(strings.ContainsRune("timeout", 97))

出力:

true
false

func Count

func Count(s, substr string) int

Count は s の中に substr が重ならずに出現する回数を返します。 substr が空文字の場合, s 中の Unicode コードポイント数 + 1 を返します。

コード:

fmt.Println(strings.Count("cheese", "e"))
fmt.Println(strings.Count("five", "")) // 各ルーン文字の前と後

出力:

3
5

func EqualFold

func EqualFold(s, t string) bool

EqualFold は s と t を UTF-8 文字列とみなして,Unicode ケースを無視した時に, 等しいかどうかを返します。

コード:

fmt.Println(strings.EqualFold("Go", "go"))

出力:

true

func Fields

func Fields(s string) []string

Fields は文字列 s を 1 文字以上の連続した空白文字の前後で区切り,区切られた部分文字列のスライスを返します。 空白文字は unicode.IsSpace で定義されています。 sが空白文字のみからなっている場合,空のスライスを返します。

コード:

fmt.Printf("Fields are: %q", strings.Fields("  foo bar  baz   "))

出力:

Fields are: ["foo" "bar" "baz"]

func FieldsFunc

func FieldsFunc(s string, f func(rune) bool) []string

FieldsFunc は f(c) を満たす Unicode コードポイントで区切り, s の部分文字列のスライスを返します。 s のすべてのコードポイントが f(c) を満たす,あるいは 空文字列の場合,空のスライスを返します。 FieldsFunc は f(c) を呼ぶ順序を保証しません。 f が一貫した結果を返さないなら, FieldsFunc はクラッシュする可能性があります。

コード:

f := func(c rune) bool {
    return !unicode.IsLetter(c) && !unicode.IsNumber(c)
}
fmt.Printf("Fields are: %q", strings.FieldsFunc("  foo1;bar2,baz3...", f))

出力:

Fields are: ["foo1" "bar2" "baz3"]

func HasPrefix

func HasPrefix(s, prefix string) bool

HasPrefix は文字列 s が prefix から始まるかチェックします。

コード:

fmt.Println(strings.HasPrefix("Gopher", "Go"))
fmt.Println(strings.HasPrefix("Gopher", "C"))
fmt.Println(strings.HasPrefix("Gopher", ""))

出力:

true
false
true

func HasSuffix

func HasSuffix(s, suffix string) bool

HasSuffix は文字列 s が suffix で終わるかをチェックします。

コード:

fmt.Println(strings.HasSuffix("Amigo", "go"))
fmt.Println(strings.HasSuffix("Amigo", "O"))
fmt.Println(strings.HasSuffix("Amigo", "Ami"))
fmt.Println(strings.HasSuffix("Amigo", ""))

出力:

true
false
false
true

func Index

func Index(s, substr string) int

Index は,s 中に substr が最初に出現するインデックスを返します。substr が s 中に存在しない場合, -1 を返します。

コード:

fmt.Println(strings.Index("chicken", "ken"))
fmt.Println(strings.Index("chicken", "dmr"))

出力:

4
-1

func IndexAny

func IndexAny(s, chars string) int

IndexAny は chars に含まれるいずれかの Unicode コードポイントが s 中に最初に出現する場所を返します。 chars 中の Unicode コードポイントのどれも s 中に存在しない場合, -1 を返します。

コード:

fmt.Println(strings.IndexAny("chicken", "aeiouy"))
fmt.Println(strings.IndexAny("crwth", "aeiouy"))

出力:

2
-1

func IndexByte 1.2

func IndexByte(s string, c byte) int

IndexByte は s 中にcが最初に出現する場所を返します。 s 中に c が存在しない場合, -1 を返します。

コード:

fmt.Println(strings.IndexByte("golang", 'g'))
fmt.Println(strings.IndexByte("gophers", 'h'))
fmt.Println(strings.IndexByte("golang", 'x'))

出力:

0
3
-1

func IndexFunc

func IndexFunc(s string, f func(rune) bool) int

IndexFunc は,f(c) を満たす最初の Unicode コードポイントのインデックスを返します。 f(c) を満たすものがない場合, -1 を返します。

コード:

f := func(c rune) bool {
    return unicode.Is(unicode.Han, c)
}
fmt.Println(strings.IndexFunc("Hello, 世界", f))
fmt.Println(strings.IndexFunc("Hello, world", f))

出力:

7
-1

func IndexRune

func IndexRune(s string, r rune) int

IndexRune は s 中に Unicode コードポイント r が最初に出現する場所を返します。 存在しない場合, -1 を返します。 r を utf8.RuneError にすると, 最初の無効な UTF-8バイト 列の場所を返します。

コード:

fmt.Println(strings.IndexRune("chicken", 'k'))
fmt.Println(strings.IndexRune("chicken", 'd'))

出力:

4
-1

func Join

func Join(a []string, sep string) string

Join は a の要素をつないで,1つの文字列を作成します。 各要素の間には文字列 sep を追加します。

コード:

s := []string{"foo", "bar", "baz"}
fmt.Println(strings.Join(s, ", "))

出力:

foo, bar, baz

func LastIndex

func LastIndex(s, substr string) int

LastIndex は s 中に最後に出現する substr の場所を返します。s 中に substr が存在しない場合, -1 を返します。

コード:

fmt.Println(strings.Index("go gopher", "go"))
fmt.Println(strings.LastIndex("go gopher", "go"))
fmt.Println(strings.LastIndex("go gopher", "rodent"))

出力:

0
3
-1

func LastIndexAny

func LastIndexAny(s, chars string) int

LastIndexAny は chars に含まれるいずれかの Unicode コードポイントが s 中に最後に出現する場所を返します。 chars 中の Unicode コードポイントのどれも s 中に存在しない場合, -1 を返します。

コード:

fmt.Println(strings.LastIndexAny("go gopher", "go"))
fmt.Println(strings.LastIndexAny("go gopher", "rodent"))
fmt.Println(strings.LastIndexAny("go gopher", "fail"))

出力:

4
8
-1

func LastIndexByte 1.5

func LastIndexByte(s string, c byte) int

LastIndexByte は s 中に c が最後に出現する場所を返します。 s 中に c が存在しない場合, -1 を返します。

コード:

fmt.Println(strings.LastIndexByte("Hello, world", 'l'))
fmt.Println(strings.LastIndexByte("Hello, world", 'o'))
fmt.Println(strings.LastIndexByte("Hello, world", 'x'))

出力:

10
8
-1

func LastIndexFunc

func LastIndexFunc(s string, f func(rune) bool) int

LastIndexFunc は,f(c) を満たす最後の Unicode コードポイントのインデックスを返します。 f(c) を満たすものがない場合, -1 を返します。

コード:

fmt.Println(strings.LastIndexFunc("go 123", unicode.IsNumber))
fmt.Println(strings.LastIndexFunc("123 go", unicode.IsNumber))
fmt.Println(strings.LastIndexFunc("go", unicode.IsNumber))

出力:

5
2
-1

func Map

func Map(mapping func(rune) rune, s string) string

Map は文字列 s の各文字を mapping 関数を使って置き換えた文字列を返します。 mapping が負の値を返す場合,その文字は置き換えられるのではなく, 文字列から除かれます。

コード:

rot13 := func(r rune) rune {
    switch {
    case r >= 'A' && r <= 'Z':
        return 'A' + (r-'A'+13)%26
    case r >= 'a' && r <= 'z':
        return 'a' + (r-'a'+13)%26
    }
    return r
}
fmt.Println(strings.Map(rot13, "'Twas brillig and the slithy gopher..."))

出力:

'Gjnf oevyyvt naq gur fyvgul tbcure...

func Repeat

func Repeat(s string, count int) string

Repeat は文字列 s を count 回繰り返した文字列を返します。

count が負の場合,あるいは, (len(s) * count) がオーバーフローする場合,パニックします。

コード:

fmt.Println("ba" + strings.Repeat("na", 2))

出力:

banana

func Replace

func Replace(s, old, new string, n int) string

Replace は 重ならずに old が出現する最初の n 回目まで, old を new に置き換えます。 old が空文字列の場合,文字列の最初とそれぞれの UTF-8 文字のあとにマッチし, k 文字ある文字列に対し,k+1 回置き換えることになります。 n < 0 の場合,置換の回数に制限はありません。

コード:

fmt.Println(strings.Replace("oink oink oink", "k", "ky", 2))
fmt.Println(strings.Replace("oink oink oink", "oink", "moo", -1))

出力:

oinky oinky oink
moo moo moo

func ReplaceAll 1.12

func ReplaceAll(s, old, new string) string

ReplaceAll は重ならずに出現するすべての old を new に置き換えます。 old が空文字列の場合,文字列の最初とそれぞれの UTF-8 文字のあとにマッチし, k 文字ある文字列に対し,k+1 回置き換えることになります。

コード:

fmt.Println(strings.ReplaceAll("oink oink oink", "oink", "moo"))

出力:

moo moo moo

func Split

func Split(s, sep string) []string

Split は s を sep で区切り, sep 間の部分文字列のスライスを返します。

sep が s 中に存在せず, sep が空でないなら, Split は s のみからなる長さ 1 のスライスを返します。

sep が空文字の場合, Split は UTF-8 文字ごとに区切ります。 s と sep 両方空の場合, Split は空のスライスを返します。

Split は, SplitN の count を -1 に設定した場合と同じ結果になります。

コード:

fmt.Printf("%q\n", strings.Split("a,b,c", ","))
fmt.Printf("%q\n", strings.Split("a man a plan a canal panama", "a "))
fmt.Printf("%q\n", strings.Split(" xyz ", ""))
fmt.Printf("%q\n", strings.Split("", "Bernardo O'Higgins"))

出力:

["a" "b" "c"]
["" "man " "plan " "canal panama"]
[" " "x" "y" "z" " "]
[""]

func SplitAfter

func SplitAfter(s, sep string) []string

SplitAfter は s を sep の後で部分文字列に区切り, そのスライスを返します。

sep が s 中に存在せず, sep が空でないなら, SplitAfter は s のみからなる長さ 1 のスライスを返します。

sep が空文字の場合, SplitAfter は UTF-8 文字ごとに区切ります。 s と sep 両方空の場合, SplitAfter は空のスライスを返します。

SplitAfter は, SplitAfterN の count を -1 に設定した場合と同じ結果になります。

コード:

fmt.Printf("%q\n", strings.SplitAfter("a,b,c", ","))

出力:

["a," "b," "c"]

func SplitAfterN

func SplitAfterN(s, sep string, n int) []string

SplitAfterN は s を sep の後で部分文字列に区切り, そのスライスを返します。

n は部分文字列数をいくつ返すかを設定します。

n > 0: 最大でn個の部分文字列。最後の文字列は残りの文字列で, sep で区切られていません。
n == 0: nil (ゼロ個の部分文字列)
n < 0: すべての部分文字列

s と sep が空文字等の特別な場合は, SplitAfter のドキュメントを参照してください。

コード:

fmt.Printf("%q\n", strings.SplitAfterN("a,b,c", ",", 2))

出力:

["a," "b,c"]

func SplitN

func SplitN(s, sep string, n int) []string

SplitN はsをsepで区切り, 間の部分文字列のスライスを返します。

n は部分文字列数をいくつ返すかを設定します。

n > 0: 最大でn個の部分文字列。最後の文字列は残りの文字列で, sep で区切られていません。
n == 0: nil (ゼロ個の部分文字列)
n < 0: すべての部分文字列

s と sep が空文字等の特別な場合は, Split のドキュメントを参照してください。

コード:

fmt.Printf("%q\n", strings.SplitN("a,b,c", ",", 2))
z := strings.SplitN("a,b,c", ",", 0)
fmt.Printf("%q (nil = %v)\n", z, z == nil)

出力:

["a" "b,c"]
[] (nil = true)

func Title

func Title(s string) string

Title は,単語の最初位の Unicode 文字を Unicode タイトルケースに変換した文字列を返します。

BUG(rsc): Title は Unicode の単語境界を正しく扱っていません。

コード:

// この例を ToTitle の例と比べてください。
fmt.Println(strings.Title("her royal highness"))
fmt.Println(strings.Title("loud noises"))
fmt.Println(strings.Title("хлеб"))

出力:

Her Royal Highness
Loud Noises
Хлеб

func ToLower

func ToLower(s string) string

ToLower は,文字列 s のすべての Unicode 文字を小文字に変換した文字列を返します。

コード:

fmt.Println(strings.ToLower("Gopher"))

出力:

gopher

func ToLowerSpecial

func ToLowerSpecial(c unicode.SpecialCase, s string) string

ToLowerSpecial は,文字列 s のすべての Unicode 文字をケースマッピング c を用いて小文字に変換した文字列を返します。

コード:

fmt.Println(strings.ToLowerSpecial(unicode.TurkishCase, "Önnek İş"))

出力:

önnek iş

func ToTitle

func ToTitle(s string) string

ToTitle は,文字列 s のすべての Unicode 文字を Unicode タイトルケースに変換した文字列を返します。

コード:

// この例を Title の例と比べてください。
fmt.Println(strings.ToTitle("her royal highness"))
fmt.Println(strings.ToTitle("loud noises"))
fmt.Println(strings.ToTitle("хлеб"))

出力:

HER ROYAL HIGHNESS
LOUD NOISES
ХЛЕБ

func ToTitleSpecial

func ToTitleSpecial(c unicode.SpecialCase, s string) string

ToTitleSpecial は,文字列 s のすべての Unicode 文字をケースマッピング c を用いて Unicode タイトルケースに変換した文字列を返します。

コード:

fmt.Println(strings.ToTitleSpecial(unicode.TurkishCase, "dünyanın ilk borsa yapısı Aizonai kabul edilir"))

出力:

DÜNYANIN İLK BORSA YAPISI AİZONAİ KABUL EDİLİR

func ToUpper

func ToUpper(s string) string

ToUpper は,文字列 s のすべての Unicode 文字を大文字に変換した文字列を返します。

コード:

fmt.Println(strings.ToUpper("Gopher"))

出力:

GOPHER

func ToUpperSpecial

func ToUpperSpecial(c unicode.SpecialCase, s string) string

ToUpperSpecial は,文字列 s のすべての Unicode 文字をケースマッピング c を用いて大文字に変換した文字列を返します。

コード:

fmt.Println(strings.ToUpperSpecial(unicode.TurkishCase, "örnek iş"))

出力:

ÖRNEK İŞ

func ToValidUTF8 1.13

func ToValidUTF8(s, replacement string) string

ToValidUTF8 は,無効な UTF-8 バイトシーケンスのかたまりごと,空かもしれない replacement 文字列に置き換えた文字列 s のコピーを返します。

func Trim

func Trim(s string, cutset string) string

Trim は,s の頭と末尾の cutset に含まれる Unicode コードポイントを除いた スライスを返します。

コード:

fmt.Print(strings.Trim("¡¡¡Hello, Gophers!!!", "!¡"))

出力:

Hello, Gophers

func TrimFunc

func TrimFunc(s string, f func(rune) bool) string

TrimFunc は,文字列の頭と末尾から f(c) を満たす Unicode コードポイントを除いた s のスライスを返します。

コード:

fmt.Print(strings.TrimFunc("¡¡¡Hello, Gophers!!!", func(r rune) bool {
    return !unicode.IsLetter(r) && !unicode.IsNumber(r)
}))

出力:

Hello, Gophers

func TrimLeft

func TrimLeft(s string, cutset string) string

TrimLeft は,s の頭の cutset に含まれる Unicode コードポイントを除いた スライスを返します。

接頭文字を除くには,かわりに TrimPrefix を使います。

コード:

fmt.Print(strings.TrimLeft("¡¡¡Hello, Gophers!!!", "!¡"))

出力:

Hello, Gophers!!!

func TrimLeftFunc

func TrimLeftFunc(s string, f func(rune) bool) string

TrimLeftFunc は,文字列の頭から f(c) を満たす Unicode コードポイントを除いた s のスライスを返します。

コード:

fmt.Print(strings.TrimLeftFunc("¡¡¡Hello, Gophers!!!", func(r rune) bool {
    return !unicode.IsLetter(r) && !unicode.IsNumber(r)
}))

出力:

Hello, Gophers!!!

func TrimPrefix 1.1

func TrimPrefix(s, prefix string) string

TrimPrefix は,s から接頭辞 prefix を取り除いた文字列を返します。 s が prefix で始まらない場合は,s をそのまま返します。

コード:

var s = "¡¡¡Hello, Gophers!!!"
s = strings.TrimPrefix(s, "¡¡¡Hello, ")
s = strings.TrimPrefix(s, "¡¡¡Howdy, ")
fmt.Print(s)

出力:

Gophers!!!

func TrimRight

func TrimRight(s string, cutset string) string

TrimLeft は,s の末尾の cutset に含まれる Unicode コードポイントを除いた スライスを返します。

接尾文字を除くには,かわりに TrimSuffix を使います。

コード:

fmt.Print(strings.TrimRight("¡¡¡Hello, Gophers!!!", "!¡"))

出力:

¡¡¡Hello, Gophers

func TrimRightFunc

func TrimRightFunc(s string, f func(rune) bool) string

TrimLeftFunc は,文字列の末尾から f(c) を満たす Unicode コードポイントを除いた s のスライスを返します。

コード:

fmt.Print(strings.TrimRightFunc("¡¡¡Hello, Gophers!!!", func(r rune) bool {
    return !unicode.IsLetter(r) && !unicode.IsNumber(r)
}))

出力:

¡¡¡Hello, Gophers

func TrimSpace

func TrimSpace(s string) string

TrimSpace は,s の頭と末尾の Unicode で定義された空白をすべて取り除いた スライスを返します。

コード:

fmt.Println(strings.TrimSpace(" \t\n Hello, Gophers \n\t\r\n"))

出力:

Hello, Gophers

func TrimSuffix 1.1

func TrimSuffix(s, suffix string) string

TrimSuffix は,s から接尾辞 suffix を取り除いた文字列を返します。 s が suffix で終わらない場合は,s をそのまま返します。

コード:

var s = "¡¡¡Hello, Gophers!!!"
s = strings.TrimSuffix(s, ", Gophers!!!")
s = strings.TrimSuffix(s, ", Marmots!!!")
fmt.Print(s)

出力:

¡¡¡Hello

type Builder 1.10

Builder は Write 関数を使って効率的に文字列を作成します。 メモリコピーを最小限にします。ゼロ値で使えます。 ゼロ値以外の Builder をコピーしないでください。

type Builder struct {
    // エクスポートされていないフィールドがあります
}

コード:

var b strings.Builder
for i := 3; i >= 1; i-- {
    fmt.Fprintf(&b, "%d...", i)
}
b.WriteString("ignition")
fmt.Println(b.String())

出力:

3...2...1...ignition

func (*Builder) Cap 1.12

func (b *Builder) Cap() int

Cap は Builder 中のバイトスライスの容量を返します。 すでに書き込まれたバイトを含む,作成中の文字列のために割り当てられたスペースの容量となります。

func (*Builder) Grow 1.10

func (b *Builder) Grow(n int)

Grow は追加 n バイトの容量を保証し,必要に応じて b の容量を増やします。 Grow(n) の後,再度のアロケーションなしに, b に少なくとも n バイトを書き込むことができます。 n が負の場合, Grow はパニックします。

func (*Builder) Len 1.10

func (b *Builder) Len() int

Len は作成されたバイトの数を返します。b.Len() == len(b.String())

func (*Builder) Reset 1.10

func (b *Builder) Reset()

Reset は Builder を空にします。

func (*Builder) String 1.10

func (b *Builder) String() string

String は作成された文字列を返します。

func (*Builder) Write 1.10

func (b *Builder) Write(p []byte) (int, error)

Write は p の内容をバッファ b に追加します。 Write はいつも len(p), nil を返します。

func (*Builder) WriteByte 1.10

func (b *Builder) WriteByte(c byte) error

WriteByte はバイト c をバッファ b に追加します。 返り値のエラーは常に nil です。

func (*Builder) WriteRune 1.10

func (b *Builder) WriteRune(r rune) (int, error)

WriteRune は Unicode コードポイント r の UTF-8 エンコードをバッファ b に追加します。 r の長さと nil エラーを返します。

func (*Builder) WriteString 1.10

func (b *Builder) WriteString(s string) (int, error)

WriteString は s の内容を バッファ b に追加します。 s の長さと nil エラーを返します。

type Reader

Reader は文字列を読み込み,io.Reader, io.ReaderAt, io.Seeker, io.WriterTo, io.ByteScanner, io.RuneScanner インターフェースを実装します。 Reader のゼロ値は空文字列の Reader と同様に動作します。

type Reader struct {
    // エクスポートされていないフィールドがあります
}

func NewReader

func NewReader(s string) *Reader

NewReader は s から読む新しい Reader を返します。 bytes.NewBufferString と似ていますが,より効率的で,読み込み専用となります。

func (*Reader) Len

func (r *Reader) Len() int

Len は文字列のまだ読まれていない部分のバイト数を返します。

func (*Reader) Read

func (r *Reader) Read(b []byte) (n int, err error)

func (*Reader) ReadAt

func (r *Reader) ReadAt(b []byte, off int64) (n int, err error)

func (*Reader) ReadByte

func (r *Reader) ReadByte() (byte, error)

func (*Reader) ReadRune

func (r *Reader) ReadRune() (ch rune, size int, err error)

func (*Reader) Reset 1.7

func (r *Reader) Reset(s string)

Reset により,Readerは s から読むようになります。

func (*Reader) Seek

func (r *Reader) Seek(offset int64, whence int) (int64, error)

Seek は io.Seeker インターフェースを実装します。

func (*Reader) Size 1.5

func (r *Reader) Size() int64

Size は文字列の元々の長さを返します。 Size は ReadAt で読み込み可能なバイト数です。 返り値は一定で,他のメソッド呼び出しに影響されません。

func (*Reader) UnreadByte

func (r *Reader) UnreadByte() error

func (*Reader) UnreadRune

func (r *Reader) UnreadRune() error

func (*Reader) WriteTo 1.1

func (r *Reader) WriteTo(w io.Writer) (n int64, err error)

WriteTo は io.WriterTo インターフェースを実装します。

type Replacer

Replacer は複数の文字列を置換文字列で置換します。 複数のゴルーチンで並行に用いても安全です。

type Replacer struct {
    // エクスポートされていないフィールドがあります
}

func NewReplacer

func NewReplacer(oldnew ...string) *Replacer

NewReplacer は置換前,置換後の文字列ペアのリストを持つ Replacer を返します。 置換は対象文字列中に現れる順に行われ,重複して置換することはありません。 置換前の文字列の比較は引数の順序で行われます。

NewReplacer は,引数の数が奇数の場合,パニックします。

コード:

r := strings.NewReplacer("<", "&lt;", ">", "&gt;")
fmt.Println(r.Replace("This is <b>HTML</b>!"))

出力:

This is &lt;b&gt;HTML&lt;/b&gt;!

func (*Replacer) Replace

func (r *Replacer) Replace(s string) string

Replace は s に全ての置換を行い,そのコピーを返します。

func (*Replacer) WriteString

func (r *Replacer) WriteString(w io.Writer, s string) (n int, err error)

WriteString は s に全ての置換を行い, w に書き込みます。

Bugs