Функция strings.IndexFunc
Функция strings.IndexFunc возвращает индекс первого символа в строке,
для которого переданная пользовательская функция возвращает true.
Первый параметр функции принимает строку для поиска,
второй параметр принимает функцию, которая проверяет каждый символ
и возвращает bool. Если подходящий символ не найден,
функция возвращает -1.
Синтаксис
strings.IndexFunc(str, func(r rune) bool)
Пример
Давайте найдем индекс первого символа в строке "abcde",
который является гласной буквой:
package main
import (
"fmt"
"strings"
"unicode"
)
func main() {
isVowel := func(r rune) bool {
return r == 'a' || r == 'e' || r == 'i' || r == 'o' || r == 'u'
}
res := strings.IndexFunc("abcde", isVowel)
fmt.Println(res)
}
Результат выполнения кода:
0
В строке "abcde" первый символ 'a' является гласной,
поэтому функция возвращает индекс 0.
Пример
Теперь найдем индекс первого символа в строке "abcde",
который является цифрой:
package main
import (
"fmt"
"strings"
"unicode"
)
func main() {
res := strings.IndexFunc("abcde", unicode.IsDigit)
fmt.Println(res)
}
Результат выполнения кода:
-1
В строке "abcde" нет цифр, поэтому функция возвращает -1.
Пример
Найдем индекс первого символа в строке "12345",
который не является цифрой:
package main
import (
"fmt"
"strings"
"unicode"
)
func main() {
isNotDigit := func(r rune) bool {
return !unicode.IsDigit(r)
}
res := strings.IndexFunc("12345", isNotDigit)
fmt.Println(res)
}
Результат выполнения кода:
-1
Все символы в строке "12345" являются цифрами,
поэтому функция возвращает -1.
Смотрите также
-
функцию
strings.LastIndexFunc,
которая ищет индекс последнего символа по функции -
функцию
strings.Index,
которая возвращает позицию первого вхождения подстроки -
функцию
strings.IndexAny,
которая ищет первый символ из набора -
функцию
strings.Contains,
которая проверяет наличие подстроки в строке