Функция strings.Map
Функция strings.Map применяет заданную функцию преобразования
к каждому символу (руне) исходной строки и возвращает новую строку,
состоящую из результатов преобразования. В первый параметр
передается функция с сигнатурой func(rune) rune,
которая определяет правило преобразования для каждого символа.
Во второй параметр передается исходная строка.
Если функция возвращает отрицательное значение,
то соответствующий символ удаляется из результирующей строки.
Если функция возвращает переданный символ без изменений,
то символ остается в строке.
Синтаксис
strings.Map(mapping func(rune) rune, s string) string
Пример ⁅n="sect"⁆
Давайте преобразуем все символы строки "abcde"
в верхний регистр с помощью unicode.ToUpper:
package main
import (
"fmt"
"strings"
"unicode"
)
func main() {
res := strings.Map(unicode.ToUpper, "abcde")
fmt.Println(res)
}
Результат выполнения кода:
"ABCDE"
Пример ⁅n="sect"⁆
Давайте удалим все символы не являющиеся буквами
из строки "a1b2c3d4e5". Для проверки символа
используем функцию unicode.IsLetter:
package main
import (
"fmt"
"strings"
"unicode"
)
func main() {
// Если символ не буква, возвращаем -1 для удаления
res := strings.Map(func(r rune) rune {
if unicode.IsLetter(r) {
return r
}
return -1
}, "a1b2c3d4e5")
fmt.Println(res)
}
Результат выполнения кода:
"abcde"
Пример ⁅n="sect"⁆
Давайте заменим каждый символ на следующий
в алфавите для строки "abcde":
package main
import (
"fmt"
"strings"
)
func main() {
res := strings.Map(func(r rune) rune {
// Следующий символ в алфавите
return r + 1
}, "abcde")
fmt.Println(res)
}
Результат выполнения кода:
"bcdef"
Смотрите также
-
функцию
strings.ToUpper,
которая преобразует все символы строки в верхний регистр -
функцию
strings.ToLower,
которая преобразует все символы строки в нижний регистр -
функцию
strings.ToTitle,
которая преобразует все символы в регистр заголовков -
функцию
strings.ReplaceAll,
которая заменяет все вхождения подстроки на другую строку