Spec-Zone.ru › Go

Пакет strings

  • import "strings"
  • Обзор
  • Индекс
  • Примеры

Обзор

Пакет strings реализует простые функции для работы со строками в кодировке UTF-8.

Для получения информации о строках UTF-8 в Go, обратитесь к https://blog.golang.org/strings.

Индекс

  • func Clone(s string) string
  • func Compare(a, b string) int
  • func Contains(s, substr string) bool
  • func ContainsAny(s, chars string) bool
  • func ContainsFunc(s string, f func(rune) bool) bool
  • func ContainsRune(s string, r rune) bool
  • func Count(s, substr string) int
  • func Cut(s, sep string) (before, after string, found bool)
  • func CutPrefix(s, prefix string) (after string, found bool)
  • func CutSuffix(s, suffix string) (before string, found bool)
  • func EqualFold(s, t string) bool
  • func Fields(s string) []string
  • func FieldsFunc(s string, f func(rune) bool) []string
  • func FieldsFuncSeq(s string, f func(rune) bool) iter.Seq[string]
  • func FieldsSeq(s string) iter.Seq[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(elems []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 Lines(s string) iter.Seq[string]
  • 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 SplitAfterSeq(s, sep string) iter.Seq[string]
  • func SplitN(s, sep string, n int) []string
  • func SplitSeq(s, sep string) iter.Seq[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, cutset string) string
  • func TrimFunc(s string, f func(rune) bool) string
  • func TrimLeft(s, cutset string) string
  • func TrimLeftFunc(s string, f func(rune) bool) string
  • func TrimPrefix(s, prefix string) string
  • func TrimRight(s, 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)

Примеры

Builder
Clone
Compare
Contains
ContainsAny
ContainsFunc
ContainsRune
Count
Cut
CutPrefix
CutSuffix
EqualFold
Fields
FieldsFunc
HasPrefix
HasSuffix
Index
IndexAny
IndexByte
IndexFunc
IndexRune
Join
LastIndex
LastIndexAny
LastIndexByte
LastIndexFunc
Map
NewReplacer
Repeat
Replace
ReplaceAll
Split
SplitAfter
SplitAfterN
SplitN
Title
ToLower
ToLowerSpecial
ToTitle
ToTitleSpecial
ToUpper
ToUpperSpecial
ToValidUTF8
Trim
TrimFunc
TrimLeft
TrimLeftFunc
TrimPrefix
TrimRight
TrimRightFunc
TrimSpace
TrimSuffix

Файлы пакета

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

func Clone 1.18

func Clone(s string) string

Clone возвращает свежую копию s. Она гарантирует создание копии s в новом выделении памяти, что может быть важно при сохранении только небольшой подстроки намного большей строки. Использование Clone может помочь таким программам использовать меньше памяти. Конечно, так как использование Clone создает копию, чрезмерное использование Clone может заставить программы использовать больше памяти. Clone следует использовать только в редких случаях, и только тогда, когда профилирование показывает, что это необходимо. Для строк длиной ноль возвращается строка "" и выделение памяти не происходит.

Пример

Код:

s := "abc"
clone := strings.Clone(s)
fmt.Println(s == clone)
fmt.Println(unsafe.StringData(s) == unsafe.StringData(clone))

Вывод:

true
false

func Compare 1.5

func Compare(a, b string) int

Compare возвращает целое число, сравнивающее две строки лексикографически. Результат будет 0, если a == b, -1, если a < b, и +1, если a > b.

Используйте Compare, когда вам необходимо выполнить сравнение в три этапа (например, с slices.SortFunc). Обычно более понятно и всегда быстрее использовать встроенные операторы сравнения строк ==, <, > и так далее.

Пример

Код:

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 проверяет, содержится ли подстрока substr в строке s.

Пример

Код:

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 проверяет, содержится ли любой символ Unicode из набора chars в строке 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 ContainsFunc 1.21

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

ContainsFunc проверяет, содержится ли любой символ Unicode r в строке s, удовлетворяющий условию f(r).

Пример

Код:

f := func(r rune) bool {
    return r == 'a' || r == 'e' || r == 'i' || r == 'o' || r == 'u'
}
fmt.Println(strings.ContainsFunc("hello", f))
fmt.Println(strings.ContainsFunc("rhythms", f))

Вывод:

true
false

func ContainsRune

func ContainsRune(s string, r rune) bool

ContainsRune проверяет, содержится ли символ Unicode r в строке s.

Пример

Код:

// Finds whether a string contains a particular Unicode code point.
// The code point for the lowercase letter "a", for example, is 97.
fmt.Println(strings.ContainsRune("aardvark", 97))
fmt.Println(strings.ContainsRune("timeout", 97))

Вывод:

true
false

func Count

func Count(s, substr string) int

Count подсчитывает количество неперекрывающихся вхождений подстроки substr в строке s. Если substr пустая строка, Count возвращает 1 + количество символов Unicode в строке s.

Пример

Код:

fmt.Println(strings.Count("cheese", "e"))
fmt.Println(strings.Count("five", "")) // before & after each rune

Вывод:

3
5

func Cut 1.18

func Cut(s, sep string) (before, after string, found bool)

Cut разделяет строку s по первому вхождению разделителя sep, возвращая часть строки до и после sep. Результат found сообщает, появляется ли sep в s. Если sep не встречается в s, cut возвращает s, "", false.

Пример

Код:

show := func(s, sep string) {
    before, after, found := strings.Cut(s, sep)
    fmt.Printf("Cut(%q, %q) = %q, %q, %v\n", s, sep, before, after, found)
}
show("Gopher", "Go")
show("Gopher", "ph")
show("Gopher", "er")
show("Gopher", "Badger")

Вывод:

Cut("Gopher", "Go") = "", "pher", true
Cut("Gopher", "ph") = "Go", "er", true
Cut("Gopher", "er") = "Goph", "", true
Cut("Gopher", "Badger") = "Gopher", "", false

func CutPrefix 1.20

func CutPrefix(s, prefix string) (after string, found bool)

CutPrefix возвращает строку s без заданного префикса prefix и сообщает, был ли префикс найден. Если s не начинается с prefix, CutPrefix возвращает s, false. Если prefix пустая строка, CutPrefix возвращает s, true.

Пример

Код:

show := func(s, sep string) {
    after, found := strings.CutPrefix(s, sep)
    fmt.Printf("CutPrefix(%q, %q) = %q, %v\n", s, sep, after, found)
}
show("Gopher", "Go")
show("Gopher", "ph")

Вывод:

CutPrefix("Gopher", "Go") = "pher", true
CutPrefix("Gopher", "ph") = "Gopher", false

func CutSuffix 1.20

func CutSuffix(s, suffix string) (before string, found bool)

CutSuffix возвращает строку s без заданного суффикса suffix и сообщает, был ли суффикс найден. Если s не заканчивается на suffix, CutSuffix возвращает s, false. Если suffix пустая строка, CutSuffix возвращает s, true.

Пример

Код:

show := func(s, sep string) {
    before, found := strings.CutSuffix(s, sep)
    fmt.Printf("CutSuffix(%q, %q) = %q, %v\n", s, sep, before, found)
}
show("Gopher", "Go")
show("Gopher", "er")

Вывод:

CutSuffix("Gopher", "Go") = "Gopher", false
CutSuffix("Gopher", "er") = "Goph", true

func EqualFold

func EqualFold(s, t string) bool

EqualFold проверяет, равны ли строки s и t, интерпретируемые как UTF-8 строки, с учетом регистронезависимого сравнения по простому сложению Unicode. Это более общий способ регистронезависимого сравнения.

Пример

Код:

fmt.Println(strings.EqualFold("Go", "go"))
fmt.Println(strings.EqualFold("AB", "ab")) // true because comparison uses simple case-folding
fmt.Println(strings.EqualFold("ß", "ss"))  // false because comparison does not use full case-folding

Вывод:

true
true
false

func Fields

func Fields(s string) []string

Fields разделяет строку s на подстроки по каждой последовательности одного или более пробельных символов, как определено в unicode.IsSpace, и возвращает срез подстрок s или пустой срез, если 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 разделяет строку s по каждой последовательности символов Unicode c, удовлетворяющих условию f(c), и возвращает массив срезов s. Если все символы в s удовлетворяют f(c) или строка пустая, возвращается пустой срез.

FieldsFunc не гарантирует порядок вызовов f(c) и предполагает, что f всегда возвращает одно и то же значение для данного c.

Пример

Код:

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 FieldsFuncSeq 1.24

func FieldsFuncSeq(s string, f func(rune) bool) iter.Seq[string]

FieldsFuncSeq возвращает итератор по подстрокам s, разделенным по последовательностям символов Unicode, удовлетворяющих условию f(c). Итератор возвращает те же строки, которые были бы возвращены FieldsFunc(s), но без создания среза.

func FieldsSeq 1.24

func FieldsSeq(s string) iter.Seq[string]

FieldsSeq возвращает итератор по подстрокам s, разделенным последовательностями пробельных символов, как определено в unicode.IsSpace. Итератор возвращает те же строки, которые были бы возвращены Fields(s), но без создания среза.

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 возвращает индекс первого вхождения подстроки substr в строке s или -1, если substr отсутствует в s.

Пример

Код:

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

Вывод:

4
-1

func IndexAny

func IndexAny(s, chars string) int

IndexAny возвращает индекс первого вхождения любого символа Unicode из набора chars в строке s или -1, если ни один символ из chars не присутствует в s.

Пример

Код:

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 возвращает индекс первого вхождения символа c в строке s или -1, если c отсутствует в s.

Пример

Код:

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 возвращает индекс в строке s первого символа 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 возвращает индекс первого вхождения символа Unicode r, или -1, если r отсутствует в s. Если r равно utf8.RuneError, она возвращает индекс первого некорректного UTF-8 байтового последовательности.

Пример

Код:

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

Вывод:

4
-1

func Join

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

Join конкатенирует элементы первого аргумента, создавая одну строку. Разделитель sep вставляется между элементами в результирующей строке.

Пример

Код:

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

Вывод:

foo, bar, baz

func LastIndex

func LastIndex(s, substr string) int

LastIndex возвращает индекс последнего вхождения подстроки substr в строке s или -1, если substr отсутствует в s.

Пример

Код:

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 возвращает индекс последнего вхождения любого символа Unicode из набора chars в строке s или -1, если ни один символ из chars не присутствует в s.

Пример

Код:

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 возвращает индекс последнего вхождения символа c в строке s или -1, если c отсутствует в s.

Пример

Код:

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 возвращает индекс в строке s последнего символа 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 Lines 1.24

func Lines(s string) iter.Seq[string]

Lines возвращает итератор по строкам, разделенным символом новой строки в строке s. Строки, возвращаемые итератором, включают завершающие символы новой строки. Если s пустая, итератор не возвращает никаких строк. Если s не заканчивается символом новой строки, последняя возвращенная строка не будет заканчиваться символом новой строки. Возвращает итератор однократного использования.

func Map

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

Map возвращает копию строки s с модифицированными символами в соответствии с функцией отображения. Если функция отображения возвращает отрицательное значение, символ удаляется из строки без замены.

Пример

Код:

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 возвращает новую строку, состоящую из count копий строки s.

Вызывает панику, если count отрицательный или результат (len(s) * count) приводит к переполнению.

Пример

Код:

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

Вывод:

banana

func Replace

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

Replace возвращает копию строки s с первыми n неперекрывающимися вхождениями old замененными на new. Если old пустая строка, она совпадает в начале строки и после каждой UTF-8 последовательности, что приводит к максимум k+1 заменам для строки из k символов Unicode. Если 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 возвращает копию строки s с заменой всех неперекрывающихся вхождений old на new. Если old пустая, она соответствует началу строки и после каждой UTF-8 последовательности, давая до k+1 замены для строки длиной k символов.

Пример

Код:

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

Вывод:

moo moo moo

func Split

func Split(s, sep string) []string

Split разбивает s на все подстроки, разделенные sep, и возвращает срез подстрок между этими разделителями.

Если s не содержит sep и sep не пустая, Split возвращает срез длиной 1, содержащий только s.

Если sep пустая, Split разбивает после каждой UTF-8 последовательности. Если и s и sep пустые, Split возвращает пустой срез.

Это эквивалентно SplitN с количеством -1.

Для разделения вокруг первого вхождения разделителя, см. Cut.

Пример

Код:

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 и возвращает срез этих подстрок.

Если s не содержит sep и sep не пустая, SplitAfter возвращает срез длиной 1, содержащий только s.

Если sep пустая, SplitAfter разбивает после каждой UTF-8 последовательности. Если и s и sep пустые, SplitAfter возвращает пустой срез.

Это эквивалентно SplitAfterN с количеством -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 > 0: не более n подстрок; последняя подстрока будет остатком, не разбитым на части;
  • n == 0: результат - nil (нулевые подстроки);
  • n < 0: все подстроки.

Случаи с пустыми s и sep (например, пустые строки) обрабатываются так, как описано в документации для SplitAfter.

Пример

Код:

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

Вывод:

["a," "b,c"]

func SplitAfterSeq 1.24

func SplitAfterSeq(s, sep string) iter.Seq[string]

SplitAfterSeq возвращает итератор по подстрокам s, разделенным после каждого вхождения sep. Итератор возвращает те же строки, которые вернула бы SplitAfter(s, sep), но без построения среза. Возвращает одноразовый итератор.

func SplitN

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

SplitN разбивает s на подстроки, разделенные sep, и возвращает срез подстрок между этими разделителями.

Количество определяет количество подстрок для возврата:

  • n > 0: не более n подстрок; последняя подстрока будет остатком, не разбитым на части;
  • n == 0: результат - nil (нулевые подстроки);
  • n < 0: все подстроки.

Случаи с пустыми s и sep (например, пустые строки) обрабатываются так, как описано в документации для Split.

Для разделения вокруг первого вхождения разделителя, см. Cut.

Пример

Код:

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 SplitSeq 1.24

func SplitSeq(s, sep string) iter.Seq[string]

SplitSeq возвращает итератор по всем подстрокам s, разделенным sep. Итератор возвращает те же строки, которые вернула бы Split(s, sep), но без построения среза. Возвращает одноразовый итератор.

func Title

func Title(s string) string

Title возвращает копию строки s с преобразованием всех букв Юникода, начинающих слова, в заглавные буквы Юникода.

Устарело: правило Title, используемое для границ слов, не обрабатывает правильно пунктуацию Юникода. Используйте golang.org/x/text/cases вместо этого.

Пример

Код:

// Compare this example to the ToTitle example.
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 с преобразованием всех букв Юникода в нижний регистр.

Пример

Код:

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

Вывод:

gopher

func ToLowerSpecial

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

ToLowerSpecial возвращает копию строки s с преобразованием всех букв Юникода в нижний регистр с использованием правил преобразования, заданных c.

Пример

Код:

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

Вывод:

örnek iş

func ToTitle

func ToTitle(s string) string

ToTitle возвращает копию строки s с преобразованием всех букв Юникода в заглавные буквы Юникода.

Пример

Код:

// Compare this example to the Title example.
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 с преобразованием всех букв Юникода в заглавные буквы Юникода, отдавая приоритет специальным правилам форматирования.

Пример

Код:

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 с преобразованием всех букв Юникода в верхний регистр.

Пример

Код:

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

Вывод:

GOPHER

func ToUpperSpecial

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

ToUpperSpecial возвращает копию строки s с преобразованием всех букв Юникода в верхний регистр с использованием правил преобразования, заданных c.

Пример

Код:

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

Вывод:

ÖRNEK İŞ

func ToValidUTF8 1.13

func ToValidUTF8(s, replacement string) string

ToValidUTF8 возвращает копию строки s с заменой каждой последовательности недопустимых байтов UTF-8 на строку замены, которая может быть пустой.

Пример

Код:

fmt.Printf("%s\n", strings.ToValidUTF8("abc", "\uFFFD"))
fmt.Printf("%s\n", strings.ToValidUTF8("a\xffb\xC0\xAFc\xff", ""))
fmt.Printf("%s\n", strings.ToValidUTF8("\xed\xa0\x80", "abc"))

Вывод:

abc
abc
abc

func Trim

func Trim(s, cutset string) string

Trim возвращает срез строки s, удаляя все ведущие и хвостовые символы Юникода, содержащиеся в cutset.

Пример

Код:

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

Вывод:

Hello, Gophers

func TrimFunc

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

TrimFunc возвращает срез строки s, удаляя все ведущие и хвостовые символы Юникода c, удовлетворяющие f(c).

Пример

Код:

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

Вывод:

Hello, Gophers

func TrimLeft

func TrimLeft(s, cutset string) string

TrimLeft возвращает срез строки s, удаляя все ведущие символы Юникода, содержащиеся в cutset.

Для удаления префикса используйте TrimPrefix вместо этого.

Пример

Код:

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

Вывод:

Hello, Gophers!!!

func TrimLeftFunc

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

TrimLeftFunc возвращает срез строки s, удаляя все ведущие символы Юникода c, удовлетворяющие f(c).

Пример

Код:

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 без указанного ведущего префикса. Если 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, cutset string) string

TrimRight возвращает срез строки s, удаляя все хвостовые символы Юникода, содержащиеся в cutset.

Для удаления суффикса используйте TrimSuffix вместо этого.

Пример

Код:

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

Вывод:

¡¡¡Hello, Gophers

func TrimRightFunc

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

TrimRightFunc возвращает срез строки s, удаляя все хвостовые символы Юникода c, удовлетворяющие f(c).

Пример

Код:

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, удаляя все ведущие и хвостовые пробелы, как определено в Юникоде.

Пример

Код:

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 без указанного хвостового суффикса. Если s не заканчивается на suffix, s возвращается без изменений.

Пример

Код:

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

Вывод:

¡¡¡Hello

тип Builder 1.10

Builder используется для эффективного построения строки с помощью методов Builder.Write. Минимизирует копирование памяти. Нулевое значение готово к использованию. Не копируйте не-нулевой Builder.

type Builder struct {
    // contains filtered or unexported fields
}

Пример

Код:

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 возвращает емкость базового среза байтов билдера. Это общее выделенное пространство для строке, которая строится, и включает все уже записанные байты.

func (*Builder) Grow 1.10

func (b *Builder) Grow(n int)

Grow увеличивает емкость b, если необходимо, для гарантирования места для еще n байтов. После Grow(n) по меньшей мере n байтов могут быть записаны в b без дополнительного выделения. Если 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 добавляет UTF-8 кодирование Unicode кодовой точки r в буфер 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.ByteReader, io.ByteScanner, io.RuneReader, io.RuneScanner, io.Seeker и io.WriterTo, читая из строки. Значение по умолчанию для Reader работает как Reader пустой строки.

type Reader struct {
    // contains filtered or unexported fields
}

func NewReader

func NewReader(s string) *Reader

NewReader возвращает новый Reader, читающий из s. Он похож на bytes.NewBufferString, но более эффективен и не допускает записи.

func (*Reader) Len

func (r *Reader) Len() int

Len возвращает количество байтов непрочитанной части строки.

func (*Reader) Read

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

Read реализует интерфейс io.Reader.

func (*Reader) ReadAt

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

ReadAt реализует интерфейс io.ReaderAt.

func (*Reader) ReadByte

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

ReadByte реализует интерфейс io.ByteReader.

func (*Reader) ReadRune

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

ReadRune реализует интерфейс io.RuneReader.

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 — это количество байтов, доступных для чтения через Reader.ReadAt. Возвращаемое значение всегда одинаковое и не изменяется вызовами других методов.

func (*Reader) UnreadByte

func (r *Reader) UnreadByte() error

UnreadByte реализует интерфейс io.ByteScanner.

func (*Reader) UnreadRune

func (r *Reader) UnreadRune() error

UnreadRune реализует интерфейс io.RuneScanner.

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 {
    // contains filtered or unexported fields
}

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 со всеми выполненными заменами.

© Google, Inc.
Licensed under the Creative Commons Attribution License 3.0.
http://golang.org/pkg/strings/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API