1. Пользователь вводит текст одной строкой и нажимает “enter”. 2. В тексте могут присутствовать различные специальные символы, которые надо обрабатывать согласно условиям ниже: Если в тексте между словами присутствует несколько пробелов подряд, надо оставить только один из них. Для реализации этого подпункта можно пользоваться методами Replace() и ReplaceAll() из пакета strings. Если в тексте присутствует знак минус (-), это значит, что символ слева от этого знака надо поменять местами с символом, который стоит справа от этого знака. Обратите внимание, что символом может быть не только буква, но и цифра или любой другой знак/символ, в том числе символ пробела. После смены символов местами, знак минус (-) надо удалить из строки результата. Если в тексте присутствует знак плюс (+), вам необходимо заменить его на восклицательный знак (!). В тексте могут присутствовать цифры (от 0 до 9). Вам необходимо посчитать их сумму и удалить из текста. Сумму цифр вам нужно добавить в конец результирующей строки через пробел (пробел должен стоять перед суммой цифр). Если цифр в тексте не было - “0” (ноль) в конце строки выводить не нужно. Все манипуляции с текстом должны выполняться ровно в той последовательности, которая описана в пункте 2. То есть, сначала выполняется пункт A, затем пункт B, затем C и D. Это важно для получения корректного итогового результата. Пример ввода: генрих1 играет+2 л-июбит0школу Пример вывода: генрих играет! илюбитшколу 3 Пример ввода №2: Я ю-лбю-л голанг всем сердцем+ Пример вывода: Я люблю голанг всем сердцем! Пример ввода: Я-б к-2 р3! Пример вывода: ЯЯб кк р! 5 Вот мой код который в 3м примере вывода выдает ошибку. package main import ( "bufio" "fmt" "os" "strconv" "strings" ) type Text struct { Content string } func (t *Text) textModifier() { // Удаление лишних пробелов (пункт A) t.Content = strings.ReplaceAll(t.Content, " ", " ") for strings.Contains(t.Content, " ") { // Пока есть двойные пробелы t.Content = strings.ReplaceAll(t.Content, " ", " ") } // Обработка символа '-' (пункт B) runes := []rune(t.Content) var result []rune i := 0 for i < len(runes) { if runes[i] == '-' && i > 0 && i < len(runes)-1 { // Меняем местами символ слева и символ справа от '-' left := runes[i-1] right := runes[i+1] result = result[:len(result)-1] // Убираем последний символ, чтобы заменить его result = append(result, right, left) i += 2 // Пропускаем символ справа от '-' } else { result = append(result, runes[i]) i++ } } t.Content = string(result) // Замена '+' на '!' (пункт C) t.Content = strings.ReplaceAll(t.Content, "+", "!") // Сумма цифр и их удаление (пункт D) sum := 0 finalResult := []rune{} for _, char := range t.Content { if char >= '0' && char <= '9' { // Проверяем, является ли символ цифрой digit, _ := strconv.Atoi(string(char)) sum += digit } else { finalResult = append(finalResult, char) } } t.Content = string(finalResult) if sum > 0 { t.Content += " " + strconv.Itoa(sum) } // Вывод результата fmt.Println(t.Content) } func main() { text := &Text{} // Создаем новый сканер для чтения из стандартного ввода scanner := bufio.NewScanner(os.Stdin) // Просим пользователя ввести строку fmt.Println("Введите строку:") for scanner.Scan() { text.Content = scanner.Text() text.textModifier() } } Код package main import ( "bufio" "fmt" "os" "strconv" "strings" ) type Text struct { Content string } func (t *Text) textModifier() { // Удаление лишних пробелов (пункт A) t.Content = strings.ReplaceAll(t.Content, " ", " ") for strings.Contains(t.Content, " ") { // Пока есть двойные пробелы t.Content = strings.ReplaceAll(t.Content, " ", " ") } // Обработка символа '-' (пункт B) runes := []rune(t.Content) var result []rune i := 0 for i < len(runes) { if runes[i] == '-' && i > 0 && i < len(runes)-1 { // Меняем местами символ слева и символ справа от '-' left := runes[i-1] right := runes[i+1] result = result[:len(result)-1] // Убираем последний символ, чтобы заменить его result = append(result, right, left) i += 2 // Пропускаем символ справа от '-' } else { result = append(result, runes[i]) i++ } } t.Content = string(result) // Замена '+' на '!' (пункт C) t.Content = strings.ReplaceAll(t.Content, "+", "!") // Сумма цифр и их удаление (пункт D) sum := 0 finalResult := []rune{} for _, char := range t.Content { if char >= '0' && char <= '9' { // Проверяем, является ли символ цифрой digit, _ := strconv.Atoi(string(char)) sum += digit } else { finalResult = append(finalResult, char) } } t.Content = string(finalResult) if sum > 0 { t.Content += " " + strconv.Itoa(sum) } // Вывод результата fmt.Println(t.Content) } func main() { text := &Text{} // Создаем новый сканер для чтения из стандартного ввода scanner := bufio.NewScanner(os.Stdin) // Просим пользователя ввести строку fmt.Println("Введите строку:") for scanner.Scan() { text.Content = scanner.Text() text.textModifier() } }