Функция strings.FieldsFunc
Функция strings.FieldsFunc разбивает строку на части (поля),
используя пользовательскую функцию для определения символов-разделителей.
В первый параметр мы передаем исходную строку для разбиения,
во второй параметр мы передаем функцию, которая принимает руну и возвращает
true, если этот символ должен считаться разделителем.
Функция возвращает срез строк ([]string), содержащий полученные поля.
Важно: последовательные разделители игнорируются, а пустые поля не включаются в результат.
Синтаксис
strings.FieldsFunc(str string, f func(rune) bool) []string
Пример
Давайте разобьем строку "abcde" по символам 'b' и 'd':
package main
import (
"fmt"
"strings"
)
func main() {
isSeparator := func(r rune) bool {
return r == 'b' || r == 'd'
}
res := strings.FieldsFunc("abcde", isSeparator)
fmt.Println(res)
}
Результат выполнения кода:
[a c e]
Пример
Давайте разобьем строку по нескольким символам-разделителям одновременно:
package main
import (
"fmt"
"strings"
)
func main() {
isSeparator := func(r rune) bool {
return r == ' ' || r == ',' || r == ';'
}
res := strings.FieldsFunc("a,b c;d e,f", isSeparator)
fmt.Println(res)
}
Результат выполнения кода:
[a b c d e f]
Пример
Давайте разобьем строку по цифрам, используя функцию unicode.IsDigit:
package main
import (
"fmt"
"strings"
"unicode"
)
func main() {
isDigit := func(r rune) bool {
return unicode.IsDigit(r)
}
res := strings.FieldsFunc("ab12cd34ef", isDigit)
fmt.Println(res)
}
Результат выполнения кода:
[ab cd ef]
Пример
Давайте разобьем строку по символам, не являющимся буквами:
package main
import (
"fmt"
"strings"
"unicode"
)
func main() {
isNotLetter := func(r rune) bool {
return !unicode.IsLetter(r)
}
res := strings.FieldsFunc("hello,world!123", isNotLetter)
fmt.Println(res)
}
Результат выполнения кода:
[hello world]
Смотрите также
-
функцию
strings.Fields,
которая разбивает строку по пробельным символам -
функцию
strings.Split,
которая разбивает строку по указанной подстроке -
функцию
strings.IndexFunc,
которая ищет позицию первого символа, удовлетворяющего условию -
функцию
strings.TrimFunc,
которая удаляет символы с обоих концов строки по условию