Пакет strings
Обзор
Пакет strings реализует простые функции для работы со строками в кодировке UTF-8.
Сведения о строках UTF-8 в Go см. на странице https://blog.golang.org/strings.
Указатель
Примеры
- Builder
- Clone
- Compare
- Contains
- ContainsAny
- ContainsFunc
- ContainsRune
- Count
- Cut
- CutPrefix
- CutSuffix
- EqualFold
- Fields
- FieldsFunc
- FieldsFuncSeq
- FieldsSeq
- HasPrefix
- HasSuffix
- Index
- IndexAny
- IndexByte
- IndexFunc
- IndexRune
- Join
- LastIndex
- LastIndexAny
- LastIndexByte
- LastIndexFunc
- Lines
- Map
- NewReplacer
- Repeat
- Replace
- ReplaceAll
- Split
- SplitAfter
- SplitAfterN
- SplitAfterSeq
- SplitN
- SplitSeq
- 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 сообщает, содержится ли в s хотя бы одна кодовая точка Unicode из chars.
Пример
Код:
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 возвращает true.
Пример
Код:
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 сообщает, содержится ли в s кодовая точка Unicode r.
Пример
Код:
// 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 CutLast 1.27
func CutLast(s, sep string) (before, after string, found bool)
CutLast разделяет s по последнему вхождению sep и возвращает текст до и после sep. Результат found указывает, встречается ли sep в s. Если sep не встречается в s, CutLast возвращает s, "", false.
func CutPrefix 1.20
func CutPrefix(s, prefix string) (after string, found bool)
CutPrefix возвращает s без указанной начальной строки-префикса и сообщает, найден ли этот префикс. Если s не начинается с prefix, CutPrefix возвращает s, false. Если prefix — пустая строка, CutPrefix возвращает s, true.
Пример
Код:
show := func(s, prefix string) {
after, found := strings.CutPrefix(s, prefix)
fmt.Printf("CutPrefix(%q, %q) = %q, %v\n", s, prefix, 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 без указанной конечной строки-суффикса и сообщает, найден ли этот суффикс. Если s не заканчивается на suffix, CutSuffix возвращает s, false. Если suffix — пустая строка, CutSuffix возвращает s, true.
Пример
Код:
show := func(s, suffix string) {
before, found := strings.CutSuffix(s, suffix)
fmt.Printf("CutSuffix(%q, %q) = %q, %v\n", s, suffix, 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 содержит только пробельные символы. Все элементы возвращаемого среза непустые. В отличие от Split, начальные и конечные последовательности пробельных символов отбрасываются.
Пример
Код:
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) или строка пуста, возвращается пустой срез. Все элементы возвращаемого среза непустые. В отличие от Split, начальные и конечные последовательности кодовых точек, удовлетворяющих условию 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), но без создания среза.
Пример
Код:
text := "The quick brown fox"
fmt.Println("Split on whitespace(similar to FieldsSeq):")
for word := range strings.FieldsFuncSeq(text, unicode.IsSpace) {
fmt.Printf("%q\n", word)
}
mixedText := "abc123def456ghi"
fmt.Println("\nSplit on digits:")
for word := range strings.FieldsFuncSeq(mixedText, unicode.IsDigit) {
fmt.Printf("%q\n", word)
}
Вывод:
Split on whitespace(similar to FieldsSeq): "The" "quick" "brown" "fox" Split on digits: "abc" "def" "ghi"
func FieldsSeq 1.24
func FieldsSeq(s string) iter.Seq[string]
FieldsSeq возвращает итератор по подстрокам s, разделённым по последовательностям пробельных символов, определяемых функцией unicode.IsSpace. Итератор выдаёт те же строки, которые вернул бы вызов Fields(s), но без создания среза.
Пример
Код:
text := "The quick brown fox"
fmt.Println("Split string into fields:")
for word := range strings.FieldsSeq(text) {
fmt.Printf("%q\n", word)
}
textWithSpaces := " lots of spaces "
fmt.Println("\nSplit string with multiple spaces:")
for word := range strings.FieldsSeq(textWithSpaces) {
fmt.Printf("%q\n", word)
}
Вывод:
Split string into fields: "The" "quick" "brown" "fox" Split string with multiple spaces: "lots" "of" "spaces"
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, если ни одна кодовая точка Unicode из 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, если rune отсутствует в 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, если ни одна кодовая точка Unicode из 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 возвращает индекс последней кодовой точки Unicode в s, для которой выполняется 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 не заканчивается символом новой строки, последняя выданная строка не будет заканчиваться символом новой строки. Возвращает одноразовый итератор.
Пример
Код:
text := "Hello\nWorld\nGo Programming\n"
for line := range strings.Lines(text) {
fmt.Printf("%q\n", line)
}
Вывод:
"Hello\n" "World\n" "Go Programming\n"
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 рун. Если 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 со значением count, равным -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 со значением 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 и возвращает срез этих подстрок.
Параметр count определяет количество возвращаемых подстрок:
- 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), но не создаёт срез. Возвращает одноразовый итератор.
Пример
Код:
s := "a,b,c,d"
for part := range strings.SplitAfterSeq(s, ",") {
fmt.Printf("%q\n", part)
}
Вывод:
"a," "b," "c," "d"
func SplitN
func SplitN(s, sep string, n int) []string
SplitN разбивает s на подстроки, разделённые sep, и возвращает срез подстрок между этими разделителями.
Параметр count определяет количество возвращаемых подстрок:
- 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), но не создаёт срез. Возвращает одноразовый итератор.
Пример
Код:
s := "a,b,c,d"
for part := range strings.SplitSeq(s, ",") {
fmt.Printf("%q\n", part)
}
Вывод:
"a" "b" "c" "d"
func Title
func Title(s string) string
Title возвращает копию строки s, в которой все буквы Unicode, начинающие слова, преобразованы в соответствующий регистр Unicode для заголовков.
Устарело: правило, используемое Title для определения границ слов, некорректно обрабатывает знаки пунктуации Unicode. Вместо него используйте 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, в которой все буквы 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, "Örnek İş"))
Вывод:
örnek iş
func ToTitle
func ToTitle(s string) string
ToTitle возвращает копию строки s, в которой все буквы Unicode преобразованы в верхний регистр с учетом правил заголовочного регистра Unicode.
Пример
Код:
// 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, в которой все буквы Unicode преобразованы в верхний регистр с учетом правил заголовочного регистра 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 возвращает копию строки 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, из которого удалены все начальные и конечные кодовые точки Unicode, содержащиеся в cutset.
Пример
Код:
fmt.Print(strings.Trim("¡¡¡Hello, Gophers!!!", "!¡"))
Вывод:
Hello, Gophers
func TrimFunc
func TrimFunc(s string, f func(rune) bool) string
TrimFunc возвращает срез строки s, из которого удалены все начальные и конечные кодовые точки Unicode 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, из которого удалены все начальные кодовые точки Unicode, содержащиеся в cutset.
Чтобы удалить префикс, используйте вместо этого TrimPrefix.
Пример
Код:
fmt.Print(strings.TrimLeft("¡¡¡Hello, Gophers!!!", "!¡"))
Вывод:
Hello, Gophers!!!
func TrimLeftFunc
func TrimLeftFunc(s string, f func(rune) bool) string
TrimLeftFunc возвращает срез строки s, из которого удалены все начальные кодовые точки Unicode 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, из которого удалены все конечные кодовые точки Unicode, содержащиеся в cutset.
Чтобы удалить суффикс, используйте вместо этого TrimSuffix.
Пример
Код:
fmt.Print(strings.TrimRight("¡¡¡Hello, Gophers!!!", "!¡"))
Вывод:
¡¡¡Hello, Gophers
func TrimRightFunc
func TrimRightFunc(s string, f func(rune) bool) string
TrimRightFunc возвращает срез строки s, из которого удалены все конечные кодовые точки Unicode 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, из которого удалены все начальные и конечные пробельные символы согласно определению 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 без указанного суффикса. Если строка 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 используется для эффективного создания строки с помощью методов 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 возвращает емкость базового среза байтов builder. Это общий объем памяти, выделенный для создаваемой строки, включая уже записанные байты.
func (*Builder) Grow 1.10
func (b *Builder) Grow(n int)
Grow увеличивает емкость b при необходимости, чтобы гарантировать место еще для n байтов. После вызова 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 добавляет в буфер b кодовую точку Unicode r в кодировке UTF-8. Функция возвращает количество записанных байтов и nil в качестве ошибки.
func (*Builder) WriteString 1.10
func (b *Builder) WriteString(s string) (int, error)
WriteString добавляет содержимое s в буфер b. Функция возвращает длину s и nil в качестве ошибки.
тип 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.
тип Replacer
Replacer заменяет список строк заданными строками-заменами. Он безопасен для одновременного использования несколькими горутинами.
type Replacer struct {
// contains filtered or unexported fields
}
func NewReplacer
func NewReplacer(oldnew ...string) *Replacer
NewReplacer возвращает новый Replacer на основе списка пар старых и новых строк. Замены выполняются в порядке их появления в целевой строке, без перекрывающихся совпадений. Сравнение старых строк выполняется в порядке аргументов.
NewReplacer вызывает панику, если передано нечётное количество аргументов.
Пример
Код:
r := strings.NewReplacer("<", "<", ">", ">")
fmt.Println(r.Replace("This is <b>HTML</b>!"))
Вывод:
This is <b>HTML</b>!
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/