import java.util.Scanner;
public class Main2 {
public static void main(String[] args) {
System.out.println(textModifier());
}
public static String textModifier() {
Scanner scanner = new Scanner(System.in);
String inputText = scanner.nextLine();
scanner.close();
// Process the text according to the given conditions
// a. Removing extra spaces
inputText = inputText.replaceAll("\\s+", " ");
// b. Swapping characters around "-"
inputText = swapCharacters(inputText, '-');
// c. Replacing "+" with "!"
inputText = inputText.replace("+", "!");
// d. Calculating the sum of digits and removing them
int sumOfDigits = calculateSumOfDigits(inputText);
inputText = inputText.replaceAll("\\d", "");
inputText += " " + sumOfDigits;
return inputText;
}
private static String swapCharacters(String text, char target) {
StringBuilder result = new StringBuilder();
char[] chars = text.toCharArray();
for (int i = 0; i < chars.length; i++) {
if (chars[i] == target && i > 0 && i < chars.length - 1) {
result.append(chars[i + 1]);
result.append(chars[i - 1]);
i++; // Skip the next character as it is already processed
} else {
result.append(chars[i]);
}
}
return result.toString();
}
private static int calculateSumOfDigits(String text) {
int sum = 0;
for (char c : text.toCharArray()) {
if (Character.isDigit(c)) {
sum += Character.getNumericValue(c);
}
}
return sum;
}
}
Задача: реализовать метод textModifier, который считывает из консоли текст, введённый пользователем и меняет его согласно описанному алгоритму.
public static String textModifier() // этот метод надо реализовать
Результатом работы метода является возврат строки (текста) с учётом всех изменений.
Результатом работы программы является вывод в консоль изменённого текста согласно всем условиям:
1. Пользователь вводит текст одной строкой и нажимает “enter”.
2. В тексте могут присутствовать различные специальные символы, которые надо обрабатывать согласно условиям ниже:
a. Если в тексте между словами присутствует несколько пробелов подряд, надо оставить только один из них. Для реализации этого подпункта нельзя пользоваться методами replace() и replaceAll().
b. Если в тексте присутствует знак минус (-), это значит, что символ слева от этого знака надо поменять местами с символом, который стоит справа от этого знака. Обратите внимание, что символом может быть не только буква, но и число или любой другой знак/символ, в том числе символ пробела. После смены символов местами, знак минус (-) надо удалить из строки результата.
c. Если в тексте присутствует знак плюс (+), вам необходимо заменить его на восклицательный знак (!).
d. В тексте могут присутствовать цифры (от 0 до 9). Вам необходимо посчитать их сумму и удалить из текста. Сумму цифр вам нужно добавить в конец результирующей строки через пробел (пробел должен стоять перед суммой цифр).
Все манипуляции с текстом должны выполняться ровно в той последовательности, которая описана в пункте 2. То есть, сначала выполняется пункт A, затем пункт B, затем C и D. Это важно для получения корректного итогового результата.
Пример ввода:
генрих1 играет+2 л-июбит0школу
Пример вывода:
генрих играет! илюбитшколу 3
Пример ввода №2:
Я ю-лбю-л джаву всем сердцем+
Пример вывода:
Я люблю джаву всем сердцем! ( ссылка на моё решение.)