Golang: Полезные функции для строк
Go предоставляет набор функций для работы со строками в пакете strings. Эти функции не требуют создания новых типов и работают напрямую со значениями типа string.
Чтобы использовать их, нужно импортировать пакет:
import "strings"Приведение к нижнему и верхнему регистру
strings.ToLower("HeLLo") // "hello"
strings.ToUpper("HeLLo") // "HELLO"Проверка начала и конца строки
strings.HasPrefix("golang", "go") // true
strings.HasSuffix("version.go", ".go") // trueПоиск подстроки
strings.Contains("hello world", "world") // true
strings.Index("hello world", "lo") // 3
strings.Index("hello world", "go") // -1Замена подстроки
strings.Replace("foo bar foo", "foo", "baz", 1) // "baz bar foo"
strings.Replace("foo bar foo", "foo", "baz", -1) // "baz bar baz"Четвёртый аргумент — число замен. -1 означает заменить все вхождения.
Повторение строки
strings.Repeat("na", 3) // "nananana"Функция Repeat возвращает новую строку, повторяя исходную указанное число раз. Если указать 0 — вернётся пустая строка.
Удаление пробелов в начале и конце
strings.TrimSpace(" hello\n") // "hello"Удаляются пробелы, табуляция, переносы строк.
Срезы строк (slicing)
В Go можно получать части строки, указывая диапазон индексов в квадратных скобках. Индексы задаются по позиции байтов, начиная с 0.
text := "golang"
// символы с позиции 0 до 2, не включая 2
fmt.Println(text[0:2]) // => "go"
// от начала до позиции 4
fmt.Println(text[:4]) // => "gola"
// от позиции 3 до конца строки
fmt.Println(text[3:]) // => "ang"
// вся строка
fmt.Println(text[:]) // => "golang"Задание
Реализуйте функцию GetHiddenCard(), которая принимает на вход номер кредитной карты в виде строки и возвращает её скрытую версию.
Скрытая версия состоит из N звёздочек и последних четырёх символов исходной строки. Количество звёздочек задаётся вторым параметром.
Примеры
GetHiddenCard("1234567812345678", 2) // "**5678"
GetHiddenCard("1234567812345678", 3) // "***5678"
GetHiddenCard("1234567812345678", 4) // "****5678"
GetHiddenCard("2034399002121100", 1) // "*1100"Полезное
Golang: Полезные функции для строк
Go предоставляет набор функций для работы со строками в пакете strings. Эти функции не требуют создания новых типов и работают напрямую со значениями типа string.
Чтобы использовать их, нужно импортировать пакет:
import "strings"Приведение к нижнему и верхнему регистру
strings.ToLower("HeLLo") // "hello"
strings.ToUpper("HeLLo") // "HELLO"Проверка начала и конца строки
strings.HasPrefix("golang", "go") // true
strings.HasSuffix("version.go", ".go") // trueПоиск подстроки
strings.Contains("hello world", "world") // true
strings.Index("hello world", "lo") // 3
strings.Index("hello world", "go") // -1Замена подстроки
strings.Replace("foo bar foo", "foo", "baz", 1) // "baz bar foo"
strings.Replace("foo bar foo", "foo", "baz", -1) // "baz bar baz"Четвёртый аргумент — число замен. -1 означает заменить все вхождения.
Повторение строки
strings.Repeat("na", 3) // "nananana"Функция Repeat возвращает новую строку, повторяя исходную указанное число раз. Если указать 0 — вернётся пустая строка.
Удаление пробелов в начале и конце
strings.TrimSpace(" hello\n") // "hello"Удаляются пробелы, табуляция, переносы строк.
Срезы строк (slicing)
В Go можно получать части строки, указывая диапазон индексов в квадратных скобках. Индексы задаются по позиции байтов, начиная с 0.
text := "golang"
// символы с позиции 0 до 2, не включая 2
fmt.Println(text[0:2]) // => "go"
// от начала до позиции 4
fmt.Println(text[:4]) // => "gola"
// от позиции 3 до конца строки
fmt.Println(text[3:]) // => "ang"
// вся строка
fmt.Println(text[:]) // => "golang"Задание
Реализуйте функцию GetHiddenCard(), которая принимает на вход номер кредитной карты в виде строки и возвращает её скрытую версию.
Скрытая версия состоит из N звёздочек и последних четырёх символов исходной строки. Количество звёздочек задаётся вторым параметром.
Примеры
GetHiddenCard("1234567812345678", 2) // "**5678"
GetHiddenCard("1234567812345678", 3) // "***5678"
GetHiddenCard("1234567812345678", 4) // "****5678"
GetHiddenCard("2034399002121100", 1) // "*1100"Полезное
Ваше упражнение проверяется по этим тестам
package solution
import (
"testing"
"github.com/stretchr/testify/assert"
)
func TestGetHiddenCard(t *testing.T) {
a := assert.New(t)
a.Equal("**5678", GetHiddenCard("1234567812345678", 2))
a.Equal("***5678", GetHiddenCard("1234567812345678", 3))
a.Equal("*1100", GetHiddenCard("2034399002121100", 1))
a.Equal("*****9999", GetHiddenCard("1111222233339999", 5))
}Решение учителя откроется через:
20:00
