пятница, 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"]


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


Комментариев нет:

Отправить комментарий