strings.go 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. package main
  2. import (
  3. "fmt"
  4. "strings"
  5. )
  6. func main() {
  7. // ExampleString()
  8. // ExampleEqualString()
  9. stringFunctions()
  10. }
  11. func ExampleString() {
  12. // Создадим строковый литерал s, значение которого "Это строка".
  13. // Строка состоит из 10 символов, но ее длина в байтах будет 19,
  14. // так как кириллические символы занимают 2 байта, а пробел - 1 байт.
  15. var s string = "Это строка"
  16. fmt.Printf("Длина строки: %d байт\n", len(s))
  17. // Получи подстоку строки
  18. fmt.Printf("Напечатаем только второе слово в кавычках: \"%v\"\n", s[7:])
  19. // Попробуем изменить строку (возникает ошибка компиляции, так как строки
  20. // неизменяемы):
  21. // s[3] = 12
  22. // Ошибка компиляции: cannot assign to s[3], потому что строки -
  23. // неизменяемые последовательности.
  24. // "Изменим строку", создав новую строку
  25. s = s + " Новая строка"
  26. fmt.Printf("%v\n", s)
  27. // Проитерируемся по строке
  28. for _, b := range s {
  29. fmt.Printf("%v", b)
  30. }
  31. fmt.Printf("\n")
  32. }
  33. func ExampleEqualString() {
  34. // Сравнение строк на равенство
  35. fmt.Printf("Сравнение на равенство строк \"строка1\" и \"строка2\": %v\n", "строка1" == "строка2")
  36. // Сравнение строк на неравенство
  37. fmt.Printf("Сравнение на неравенство строк \"строка1\" и \"строка2\": %v\n", "строка1" != "строка2")
  38. // Сравнение строк по алфавиту
  39. fmt.Printf("\"Строка1\" > \"Строка2\": %v\n", "Строка1" > "Строка2")
  40. // Output:
  41. // Сравнение на равенство строк "строка1" и "строка2": false
  42. // Сравнение на неравенство строк "строка1" и "строка2": true
  43. // "Строка1" > "Строка2": false
  44. }
  45. func stringFunctions() {
  46. fmt.Println(
  47. // Содержится ли подстрока в строке
  48. strings.Contains("test", "es"),
  49. // Количество подстрок в строке
  50. strings.Count("test", "t"),
  51. // Начинается ли строка с префикса
  52. strings.HasPrefix("test", "te"),
  53. // Заканчивается ли строка суффиксом
  54. strings.HasSuffix("test", "te"),
  55. // Возвращает начальный индекс подстроки в строке, а при отсутствии
  56. // вхождения возращает -1
  57. strings.Index("test", "e"),
  58. // объединяет массив строк через символ
  59. strings.Join([]string{"hello", "world"}, "-"),
  60. // результат: "hello-world"
  61. // Повторяет строку n раз подряд
  62. strings.Repeat("a", 5),
  63. // результат: "aaaaa"
  64. // Функция Replace заменяет любое вхождение old в вашей строке на new
  65. // Если значение n равно -1, то будут заменены все вхождения.
  66. // Общий вид: func Replace(s, old, new string, n int) string
  67. // Пример:
  68. strings.Replace("blanotblanot", "not", "***", -1),
  69. // результат: "bla***bla***"
  70. // Разбивает строку согласно разделителю
  71. strings.Split("a-b-c-d-e", "-"),
  72. // результат: []string{"a","b","c","d","e"}
  73. // Возвращает строку c нижним регистром
  74. strings.ToLower("TEST"),
  75. // результат: "test"
  76. // Возвращает строку c верхним регистром
  77. strings.ToUpper("test"),
  78. // результат: "TEST"
  79. // Возвращает строку с вырезанным набором
  80. strings.Trim("tetstet", "te"),
  81. // результат: s
  82. )
  83. }