|
@@ -0,0 +1,107 @@
|
|
|
|
|
+package main
|
|
|
|
|
+
|
|
|
|
|
+import (
|
|
|
|
|
+ "fmt"
|
|
|
|
|
+ "strings"
|
|
|
|
|
+)
|
|
|
|
|
+
|
|
|
|
|
+func main() {
|
|
|
|
|
+ // ExampleString()
|
|
|
|
|
+ // ExampleEqualString()
|
|
|
|
|
+ stringFunctions()
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+func ExampleString() {
|
|
|
|
|
+ // Создадим строковый литерал s, значение которого "Это строка".
|
|
|
|
|
+ // Строка состоит из 10 символов, но ее длина в байтах будет 19,
|
|
|
|
|
+ // так как кириллические символы занимают 2 байта, а пробел - 1 байт.
|
|
|
|
|
+ var s string = "Это строка"
|
|
|
|
|
+ fmt.Printf("Длина строки: %d байт\n", len(s))
|
|
|
|
|
+
|
|
|
|
|
+ // Получи подстоку строки
|
|
|
|
|
+ fmt.Printf("Напечатаем только второе слово в кавычках: \"%v\"\n", s[7:])
|
|
|
|
|
+
|
|
|
|
|
+ // Попробуем изменить строку (возникает ошибка компиляции, так как строки
|
|
|
|
|
+ // неизменяемы):
|
|
|
|
|
+ // s[3] = 12
|
|
|
|
|
+ // Ошибка компиляции: cannot assign to s[3], потому что строки -
|
|
|
|
|
+ // неизменяемые последовательности.
|
|
|
|
|
+
|
|
|
|
|
+ // "Изменим строку", создав новую строку
|
|
|
|
|
+ s = s + " Новая строка"
|
|
|
|
|
+ fmt.Printf("%v\n", s)
|
|
|
|
|
+
|
|
|
|
|
+ // Проитерируемся по строке
|
|
|
|
|
+ for _, b := range s {
|
|
|
|
|
+ fmt.Printf("%v", b)
|
|
|
|
|
+ }
|
|
|
|
|
+ fmt.Printf("\n")
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+func ExampleEqualString() {
|
|
|
|
|
+ // Сравнение строк на равенство
|
|
|
|
|
+ fmt.Printf("Сравнение на равенство строк \"строка1\" и \"строка2\": %v\n", "строка1" == "строка2")
|
|
|
|
|
+
|
|
|
|
|
+ // Сравнение строк на неравенство
|
|
|
|
|
+ fmt.Printf("Сравнение на неравенство строк \"строка1\" и \"строка2\": %v\n", "строка1" != "строка2")
|
|
|
|
|
+
|
|
|
|
|
+ // Сравнение строк по алфавиту
|
|
|
|
|
+ fmt.Printf("\"Строка1\" > \"Строка2\": %v\n", "Строка1" > "Строка2")
|
|
|
|
|
+
|
|
|
|
|
+ // Output:
|
|
|
|
|
+ // Сравнение на равенство строк "строка1" и "строка2": false
|
|
|
|
|
+ // Сравнение на неравенство строк "строка1" и "строка2": true
|
|
|
|
|
+ // "Строка1" > "Строка2": false
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+func stringFunctions() {
|
|
|
|
|
+ fmt.Println(
|
|
|
|
|
+ // Содержится ли подстрока в строке
|
|
|
|
|
+ strings.Contains("test", "es"),
|
|
|
|
|
+
|
|
|
|
|
+ // Количество подстрок в строке
|
|
|
|
|
+ strings.Count("test", "t"),
|
|
|
|
|
+
|
|
|
|
|
+ // Начинается ли строка с префикса
|
|
|
|
|
+ strings.HasPrefix("test", "te"),
|
|
|
|
|
+
|
|
|
|
|
+ // Заканчивается ли строка суффиксом
|
|
|
|
|
+ strings.HasSuffix("test", "te"),
|
|
|
|
|
+
|
|
|
|
|
+ // Возвращает начальный индекс подстроки в строке, а при отсутствии
|
|
|
|
|
+ // вхождения возращает -1
|
|
|
|
|
+ strings.Index("test", "e"),
|
|
|
|
|
+
|
|
|
|
|
+ // объединяет массив строк через символ
|
|
|
|
|
+ strings.Join([]string{"hello", "world"}, "-"),
|
|
|
|
|
+ // результат: "hello-world"
|
|
|
|
|
+
|
|
|
|
|
+ // Повторяет строку n раз подряд
|
|
|
|
|
+ strings.Repeat("a", 5),
|
|
|
|
|
+ // результат: "aaaaa"
|
|
|
|
|
+
|
|
|
|
|
+ // Функция Replace заменяет любое вхождение old в вашей строке на new
|
|
|
|
|
+ // Если значение n равно -1, то будут заменены все вхождения.
|
|
|
|
|
+ // Общий вид: func Replace(s, old, new string, n int) string
|
|
|
|
|
+ // Пример:
|
|
|
|
|
+ strings.Replace("blanotblanot", "not", "***", -1),
|
|
|
|
|
+ // результат: "bla***bla***"
|
|
|
|
|
+
|
|
|
|
|
+ // Разбивает строку согласно разделителю
|
|
|
|
|
+ strings.Split("a-b-c-d-e", "-"),
|
|
|
|
|
+ // результат: []string{"a","b","c","d","e"}
|
|
|
|
|
+
|
|
|
|
|
+ // Возвращает строку c нижним регистром
|
|
|
|
|
+ strings.ToLower("TEST"),
|
|
|
|
|
+ // результат: "test"
|
|
|
|
|
+
|
|
|
|
|
+ // Возвращает строку c верхним регистром
|
|
|
|
|
+ strings.ToUpper("test"),
|
|
|
|
|
+ // результат: "TEST"
|
|
|
|
|
+
|
|
|
|
|
+ // Возвращает строку с вырезанным набором
|
|
|
|
|
+ strings.Trim("tetstet", "te"),
|
|
|
|
|
+ // результат: s
|
|
|
|
|
+ )
|
|
|
|
|
+
|
|
|
|
|
+}
|