воскресенье, 20 сентября 2020 г.

Пакет strings в Golang, функции Trim

Функция Trim

func Trim(s, cutset string) string

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

Пример использования Trim

package main

import (
    "fmt"
    "strings"
)

func main() {
    fmt.Print(strings.Trim("¡¡¡Hello, Gophers!!!", "!¡"))
}

Вывод:

Hello, Gophers

Функция TrimFunc

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

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

Пример использования TrimFunc

package main

import (
    "fmt"
    "strings"
    "unicode"
)

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

Вывод:

Hello, Gophers

Функция TrimLeft

func TrimLeft(s, cutset string) string

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

Чтобы удалить префикс, используйте вместо этого TrimPrefix.

Пример использования TrimLeft

package main

import (
    "fmt"
    "strings"
)

func main() {
    fmt.Print(strings.TrimLeft("¡¡¡Hello, Gophers!!!", "!¡"))
}

Вывод:

Hello, Gophers!!!

Функция TrimLeftFunc

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

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

Пример использования TrimLeftFunc

package main

import (
    "fmt"
    "strings"
    "unicode"
)

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

Вывод:

Hello, Gophers!!!

Функция TrimPrefix

func TrimPrefix(s, prefix string) string

TrimPrefix возвращает s без переданной строки префикса. Если s не начинается с префикса, s возвращается без изменений.

Пример использования TrimPrefix

package main

import (
    "fmt"
    "strings"
)

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

Вывод:

Gophers!!!

Функция TrimRight

func TrimRight(s, cutset string) string

TrimRight возвращает срез строки s, при этом все завершающие кодовые точки Unicode, содержащиеся в cutset, удалены.

Чтобы удалить суффикс, используйте вместо него TrimSuffix.

Пример использования TrimRight

package main

import (
    "fmt"
    "strings"
)

func main() {
    fmt.Print(strings.TrimRight("¡¡¡Hello, Gophers!!!", "!¡"))
}

Вывод:

¡¡¡Hello, Gophers

Функция TrimRightFunc

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

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

Пример использования TrimRightFunc

package main

import (
    "fmt"
    "strings"
    "unicode"
)

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

Вывод:

¡¡¡Hello, Gophers

Функция TrimSpace

func TrimSpace(s string) string

TrimSpace возвращает срез строки s с удалением всех начальных и конечных пробелов, как определено в Unicode.

Пример использования TrimSpace

package main

import (
    "fmt"
    "strings"
)

func main() {
    fmt.Println(strings.TrimSpace(" \t\n Hello, Gophers \n\t\r\n"))
}

Вывод:

Hello, Gophers

Функция TrimSuffix

func TrimSuffix(s, suffix string) string

TrimSuffix возвращает s без заданной конечной строки суффикса. Если s не заканчивается суффиксом, s возвращается без изменений.

Пример использования TrimSuffix

package main

import (
    "fmt"
    "strings"
)

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

Вывод:

¡¡¡Hello


Читайте также:


воскресенье, 13 сентября 2020 г.

Пакет strings в Golang, функции смены регистра

Функция Title

func Title(s string) string

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

Пример использования Title

import (
    "fmt"
    "strings"
)

func main() {
    fmt.Println(strings.Title("her royal highness"))
    fmt.Println(strings.Title("loud noises"))
    fmt.Println(strings.Title("хлеб"))
}

Вывод:

Her Royal Highness
Loud Noises
Хлеб

Функция ToLower

func ToLower(s string) string

ToLower возвращает s со всеми буквами Unicode, сопоставленными с их нижним регистром.

Пример использования ToLower

package main

import (
    "fmt"
    "strings"
)

func main() {
    fmt.Println(strings.ToLower("Gopher"))
}

Вывод:

gopher

Функция ToLowerSpecial

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

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

Пример использования ToLowerSpecial

package main

import (
    "fmt"
    "strings"
    "unicode"
)

func main() {
    fmt.Println(strings.ToLowerSpecial(unicode.TurkishCase, 
                                       "Önnek İş"))
}

Вывод:

önnek iş

Функция ToTitle

func ToTitle(s string) string

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

Пример использования ToTitle

import (
    "fmt"
    "strings"
)

func main() {
    fmt.Println(strings.ToTitle("her royal highness"))
    fmt.Println(strings.ToTitle("loud noises"))
    fmt.Println(strings.ToTitle("хлеб"))
}

Вывод:

HER ROYAL HIGHNESS
LOUD NOISES
ХЛЕБ

Функция ToTitleSpecial

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

ToTitleSpecial возвращает копию строки s со всеми буквами Unicode, сопоставленными с их регистром заголовка Unicode, отдавая приоритет специальным правилам регистра.

Пример использования ToTitleSpecial

package main

import (
    "fmt"
    "strings"
    "unicode"
)

func main() {
    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

Функция ToUpper

func ToUpper(s string) string

ToUpper возвращает s со всеми буквами Unicode, сопоставленными с их верхним регистром.

Пример использования ToUpper

package main

import (
    "fmt"
    "strings"
)

func main() {
    fmt.Println(strings.ToUpper("Gopher"))
}

Вывод:

GOPHER

Функция ToUpperSpecial

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

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

Пример использования ToUpperSpecial

package main

import (
    "fmt"
    "strings"
    "unicode"
)

func main() {
    fmt.Println(strings.ToUpperSpecial(unicode.TurkishCase, 
                                       "örnek iş"))
}

Вывод:

ÖRNEK İŞ


Читайте также:


среда, 9 сентября 2020 г.

Пакет strings в Golang, функции Split

Функция Split

func Split(s, sep string) []string

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

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

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

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

Пример использования Split

package main

import (
    "fmt"
    "strings"
)

func main() {
    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" " "]
[""]

Функция 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.

Пример использования SplitAfter

package main

import (
    "fmt"
    "strings"
)

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

Вывод:

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

Функция SplitAfterN

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

SplitAfterN разделяет s на подстроки после каждого экземпляра sep и возвращает срез этих подстрок.

Счетчик определяет количество возвращаемых подстрок:

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

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

Пример использования SplitAfterN

package main

import (
    "fmt"
    "strings"
)

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

Вывод:

["a," "b,c"]

Функция SplitN

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

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

Счетчик определяет количество возвращаемых подстрок:

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

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

Пример использования SplitN

package main

import (
    "fmt"
    "strings"
)

func main() {
    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)


Читайте также:


вторник, 8 сентября 2020 г.

Пакет strings в Golang, функция Map, Repeat, Replace

Функция Map

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

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

Пример использования Map

package main

import (
    "fmt"
    "strings"
)

func main() {
    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...

Функция Repeat

func Repeat(s string, count int) string

Repeat возвращает новую строку, состоящую из count копий строки s.

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

Пример использования Repeat

package main

import (
    "fmt"
    "strings"
)

func main() {
    fmt.Println("ba" + strings.Repeat("na", 2))
}

Вывод:

banana

Функция Replace

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

Replace возвращает копию строки s с первыми n неперекрывающимися экземплярами old, замененными new. Если old пуст, он соответствует началу строки и после каждой последовательности UTF-8, что дает до k + 1 замен для k-рунной строки. Если n < 0, нет ограничений на количество замен.

Пример использования Replace

package main

import (
    "fmt"
    "strings"
)

func main() {
    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

Функция ReplaceAll

func ReplaceAll(s, old, new string) string

ReplaceAll возвращает копию строки s, в которой все неперекрывающиеся экземпляры old заменены на new. Если old пуст, он соответствует началу строки и после каждой последовательности UTF-8, что дает до k + 1 замен для k-рунной строки.

Пример использования ReplaceAll

package main

import (
    "fmt"
    "strings"
)

func main() {
    fmt.Println(strings.ReplaceAll("oink oink oink", "oink", "moo"))
}

Вывод:

moo moo moo


Читайте также:


воскресенье, 6 сентября 2020 г.

Пакет strings в Golang, функции Join, LastIndex

Функция Join

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

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

Пример использования Join

package main

import (
    "fmt"
    "strings"
)

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

Вывод:

foo, bar, baz

Функция LastIndex

func LastIndex(s, substr string) int

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

Пример использования LastIndex

package main

import (
    "fmt"
    "strings"
)

func main() {
    fmt.Println(strings.Index("go gopher", "go"))
    fmt.Println(strings.LastIndex("go gopher", "go"))
    fmt.Println(strings.LastIndex("go gopher", "rodent"))
}

Вывод:

0
3
-1

Функция LastIndexAny

func LastIndexAny(s, chars string) int

LastIndexAny возвращает индекс последнего экземпляра любой кодовой точки Unicode из символов в s или -1, если в s нет кодовой точки Unicode из символов.

Пример использования LastIndexAny

package main

import (
    "fmt"
    "strings"
)

func main() {
    fmt.Println(strings.LastIndexAny("go gopher", "go"))
    fmt.Println(strings.LastIndexAny("go gopher", "rodent"))
    fmt.Println(strings.LastIndexAny("go gopher", "fail"))
}

Вывод:

4
8
-1

Функция LastIndexByte

func LastIndexByte(s string, c byte) int

LastIndexByte возвращает индекс последнего экземпляра c в s или -1, если c отсутствует в s.

Пример использования LastIndexByte

package main

import (
    "fmt"
    "strings"
)

func main() {
    fmt.Println(strings.LastIndexByte("Hello, world", 'l'))
    fmt.Println(strings.LastIndexByte("Hello, world", 'o'))
    fmt.Println(strings.LastIndexByte("Hello, world", 'x'))
}

Вывод:

10
8
-1

Функция LastIndexFunc

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

LastIndexFunc возвращает индекс в s последней кодовой точки Unicode, удовлетворяющей f(c), или -1, если ничего не выполняется.

Пример использования LastIndexFunc

package main

import (
    "fmt"
    "strings"
    "unicode"
)

func main() {
    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


Читайте также:


Пакет strings в Golang, функции HasPrefix, HasSuffix, Index

Функция HasPrefix

func HasPrefix(s, prefix string) bool

HasPrefix проверяет, начинается ли строка s с prefix.

Пример использования HasPrefix

package main

import (
    "fmt"
    "strings"
)

func main() {
    fmt.Println(strings.HasPrefix("Gopher", "Go"))
    fmt.Println(strings.HasPrefix("Gopher", "C"))
    fmt.Println(strings.HasPrefix("Gopher", ""))
}

Вывод:

true
false
true

Функция HasSuffix

func HasSuffix(s, suffix string) bool

HasSuffix проверяет, заканчивается ли строка s на suffix.

Пример использования HasPrefix

package main

import (
    "fmt"
    "strings"
)

func main() {
    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

Функция Index

func Index(s, substr string) int

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

Пример использования Index

package main

import (
    "fmt"
    "strings"
)

func main() {
    fmt.Println(strings.Index("chicken", "ken"))
    fmt.Println(strings.Index("chicken", "dmr"))
}

Вывод:

4
-1

Функция IndexAny

func IndexAny(s, chars string) int

IndexAny возвращает индекс первого экземпляра любой кодовой точки Юникода из chars в s или -1, если в s нет кодовой точки Юникода из chars.

Пример использования IndexAny

package main

import (
    "fmt"
    "strings"
)

func main() {
    fmt.Println(strings.IndexAny("chicken", "aeiouy"))
    fmt.Println(strings.IndexAny("crwth", "aeiouy"))
}

Вывод:

2
-1

Функция IndexByte

func IndexByte(s string, c byte) int

IndexByte возвращает индекс первого экземпляра c в s или -1, если c отсутствует в s.

Пример использования IndexByte

package main

import (
    "fmt"
    "strings"
)

func main() {
    fmt.Println(strings.IndexByte("golang", 'g'))
    fmt.Println(strings.IndexByte("gophers", 'h'))
    fmt.Println(strings.IndexByte("golang", 'x'))
}

Вывод:

0
3
-1

Функция IndexFunc

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

IndexFunc возвращает индекс в s первой кодовой точки Unicode, удовлетворяющей f(c), или -1, если нет.

Пример использования IndexFunc

package main

import (
    "fmt"
    "strings"
    "unicode"
)

func main() {
    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

Функция IndexRune

func IndexRune(s string, r rune) int

IndexRune возвращает индекс первого экземпляра кодовой точки Unicode r или -1, если руна отсутствует в s. Если r - это utf8.RuneError, возвращает первый экземпляр любой недопустимой последовательности байтов UTF-8.

Пример использования IndexRune

package main

import (
    "fmt"
    "strings"
)

func main() {
    fmt.Println(strings.IndexRune("chicken", 'k'))
    fmt.Println(strings.IndexRune("chicken", 'd'))
}

Вывод:

4
-1


Читайте также:


пятница, 4 сентября 2020 г.

Пакет strings в Golang, функции Count, Fields

Функция Count

func Count(s, substr string) int

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

Пример использования Count

package main

import (
    "fmt"
    "strings"
)

func main() {
    fmt.Println(strings.Count("cheese", "e"))

    // до и после каждой rune
    fmt.Println(strings.Count("five", "")) 
}

Вывод:

3
5

Функция EqualFold

func EqualFold(s, t string) bool

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

Пример использования EqualFold

package main

import (
    "fmt"
    "strings"
)

func main() {
    fmt.Println(strings.EqualFold("Go", "go"))
}

Вывод:

true

Функция Fields

func Fields(s string) []string

Fields разбивает строку s вокруг каждого экземпляра одного или нескольких последовательных символов пробела, как определено в unicode.IsSpace, возвращая часть подстрок строки s или пустую часть, если s содержит только пробелы.

Пример использования Fields

package main

import (
    "fmt"
    "strings"
)

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

Вывод:

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

Функция 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.

Пример использования FieldsFunc

package main

import (
    "fmt"
    "strings"
    "unicode"
)

func main() {
    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"]


Читайте также:


четверг, 3 сентября 2020 г.

Пакет strings в Golang, функции Contains

Функция Contains

func Contains(s, substr string) bool

Contains сообщает, находятся ли substr в s.

Пример использования Contains

package main

import (
    "fmt"
    "strings"
)

func main() {
    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

Функция ContainsAny

func ContainsAny(s, chars string) bool

ContainsAny сообщает, находятся ли какие-либо кодовые точки Unicode в символах в пределах s.

Пример использования ContainsAny

package main

import (
    "fmt"
    "strings"
)

func main() {
    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

Функция ContainsRune

func ContainsRune(s string, r rune) bool

ContainsRune сообщает, находится ли кодовая точка Юникода r в пределах s.

Пример использования ContainsRune

package main

import (
    "fmt"
    "strings"
)

func main() {
    // Проверяет, содержит ли строка конкретную кодовую точку Unicode.
    // Например, кодовая точка для строчной буквы "a" - 97.
    fmt.Println(strings.ContainsRune("aardvark", 97))
    fmt.Println(strings.ContainsRune("timeout", 97))
}

Вывод:

true
false


Читайте также: