Не могу объяснить, как инвертировать регистр символов с помощью обычного. На этом этапе изменяется регистр всех символов, но необходимо, чтобы я менял регистр только в выделении. Что нужно изменить ??
Задача Создать класс, который отображает содержимое текстового файла в консоли, инвертируя регистр всех символов каждого слова, содержащего более 3 символов.
В файле part1.txt содержится
Когда я был моложе
Гораздо моложе
Чем сегодня
Информация из файла
в верхний регистр
part1. java
import java.io.IOException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Part1 {
public static void main(String[] args) throws IOException {
System.out.println(mainMethod(Util.readFile("part1.txt")));
}
public static String mainMethod(String input) {
Pattern p = Pattern.compile("(\\w{4,}+|[А-Яа-яёЁ]{4,}+)");
Matcher m = p.matcher(input);
char[] chars = input.toCharArray();
for (int i = 0; i < chars.length; i++) {
char c = chars[i];
if (m.find(0)) {
if (Character.isUpperCase(c) || chars.length <= 4) {
chars[i] = Character.toLowerCase(c);
} else {
chars[i] = Character.toUpperCase(c);
}
}
}
return new String(chars);
}
}
Util. java
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Util {
private static final String ENCODING = "Cp1251";
public static String readFile(String path) throws IOException {
byte[] bytes = Files.readAllBytes(Paths.get(path));
return new String(bytes, ENCODING);
}
public static Matcher getMatcher(String regex, String input) {
return Pattern.compile(regex).matcher(input);
}
}