Golang Strings.

Golang strings

Работа со строками. Погружение в Golang Strings.
Есть много причин, по которым нам может быть нужно работать со строками по-разному. Ниже приведены некоторые ситуации, с которыми вы, вероятно, столкнетесь и для которых есть решение в библиотеке strings :

  • пользовательский ввод или анализ тектса, который может содержать специальные символы, которые нам необходимо обрабатывать.
  • проверка, содержит ли строка то, что нам нужно
  • разбор, анализ файла, пока мы не получим данные из текста, которые нам нужны, может быть, например, число или дата.
    п
  • вывод, иногда нам нужно представить текст определенным образом в пользовательском интерфейсе, например, чтобы выделить указанную информацию.

@Golang_google – ресурсы и гайды для эффективного изучения Go

Strings. Обработка специальных символов

Допустим, мы читаем пользовательский ввод и хотим интерпретировать полученную строку как число. Чтобы сделать нашу программу надежной, допускаем ввод пользователем пробелов или символов пеереноса строки.

В коде Должен быть разрешен следующий ввод:

114
   114
114\n

Для обработки такого случая нам нужны три метода ( который содержится в пакете Golang strings ), а именно Trim(), TrimLeft() и TrimRight().

-Trim() удаляет пробельные символы как с левой, так и с правой стороны.

– TrimLeft(). Он удаляет пробелы только с левой стороны, а также, если вы укажете специальные символы.

TrimRight(). Он удаляет пробелы только с правой стороны, а также, если вы укажете специальные символы.


Все эти функции имеют в качестве второго параметра так называемый параметр cutset, где вы указываете, от какого символа хотите избавиться. Например, вы можете указать удалить символы пробела, новой строки и табуляции следующим образом:

" \n\t"

Вот некоторый код, который показывает использование всех трех методов:

fmt.Printf("%s , string length %d \n", s, len(s))
 res := strings.Trim(s, " ")
 fmt.Printf("%s , string length %d \n", res, len(res))

 s2 := "   114  "
 fmt.Printf("%s , string length %d \n", s2, len(s2))
 res = strings.TrimLeft(s2, " ")
 fmt.Printf("%s , string length %d \n", res, len(res))

 s3 := "   114  "
 fmt.Printf("%s , string length %d \n", s3, len(s3))
 res = strings.TrimRight(s3, " ")
 fmt.Printf("%s , string length %d \n", res, len(res))
 fmt.Printf("I love Golang strings ")

Вышеупомянутая строка имеет три пробела слева и два справа, ее длина равна 8.

Вывод приведенного выше кода:

  114   , string length 8 
114 , string length 3 
   114   , string length 8 
114   , string length 5 
   114   , string length 8 
   114 , string length 6 
I love Golang strings

Golang Strings.


Возможно, вы подумали: Давайте разобьем выходные данные по строкам. Для этого вывода с помощью Trim() пробелы удаляются с обеих сторон, и мы получаем строку выравненную по левому краю:

Давайте разобьем текст по строкам.

Для этого вывода с помощью Trim() пробелы удаляются с двух сторон, и мы получим текст, выравненный по левому краю:

"114"

Следующий вывод с использованием TrimLeft() показывает, что пробелы все еще существуют:

"114   "

Наша последняя строка, использующая TrimRight(), показывает выравнивание по правому краю и то, как остаются пробелы с левой стороны:

"   114"

Проверить строки с помощью функции Contains()
Представьте, что вы хотите проверить строку, чтобы убедиться, что она содержит определенную подстроку.

Для этого вы можете использовать функцию Contains(). Его синтаксис выглядит так:

strings.Contains(stringSource, pattern)

Затем вы можете, например, использовать его для обработки списка из системы торговых точек и для каждого элемента проверять, содержит ли он определенные строки в списке:

rows := []string{"order: 5", "order: 10", "order: 5", "separator"}


for item :=  range rows {
  if strings.Contains("order") {
    // process order
  }
  // ignore
}

Парсинг strings с помощью Split()
Давайте продолжим обработку строк из нашей системы точек продаж. На этот раз мы будем смотреть на конкретный элемент и извлекать необходимую нам информацию. Для этого воспользуемся функцией Split():

rows := []string{"order: 5", "order: 10", "order: 5", "separator"}

for item :=  range rows {
  if strings.Contains("order") {
     tokens := strings.Split(item, ":") // [ "order", " 5"]
     value := strings.Trim(tokens[1])
     fmt.Println(value)
  }
  // strings Go
}

Используя этот код:

strings.Split(item, ":")

в этой строке «order: 5» мы получаем массив [«order», «5»] и strings.Trim(tokens[1]), которая будет ссылаться на 5.

Практика Golang strings


Допустим, у вас есть система управления клиентами, и вам нужно обработать много данных. Чтобы выделить определенную часть данных, мы можем использовать функции для выделения их внешнего вида.

Возьмите строку:

Jean Normand
123 Way
Washington

Если вы используете ToUpper() для строк, вы получите такой результат:

Jean Normand
123 Way
WASHINGTON

С ToLower() вы увидите, что все символы отформатированы как строчные.

Задача для работы со строками в GO

Напишите программу, которая по заданной структуре, содержащей имя, адрес и город, которая выведет все имена в нижнем регистре, а адреса в верхнем.

Решение

package main

import (
 "fmt"
 "strings"
)

type Person struct {
 Name    string
 Address string
 City    string
}

func main() {
 person := Person{Name: "jean Normand", Address: "123 Way", City: "Washington"}

 fmt.Println(strings.ToUpper(person.Name))
 fmt.Println(person.Address)
 fmt.Println(strings.ToUpper(person.City))
}

Мы рассмотрели основные методы по работе Golang strings. Предлагаем вам задачу для самостоятельного решения.

Что выведет код?

package main

import "fmt"

func main() {
 animals := []string{"bear", "bear", "rabbit", "wolf"}

 for _, animal := range animals {
  switch animal {

  case "rabbit":
   fmt.Println(animal, "is so weak!")
   fallthrough

  case "bear", "wolf":
   fmt.Println(animal, "is so strong!")
  }
 }
}

Ответ: https://t.me/golangtests/238

А здесь вы найдете roadmap для изучения Go

+1
0
+1
1
+1
0
+1
0
+1
1

Ответить

Ваш адрес email не будет опубликован. Обязательные поля помечены *