Решаю без regex, назло компилятору😕😅
package com.javarush.task.task19.task1924;
import java.io.*;
import java.util.*;
/*
Замена чисел
d:\123.txt
*/
public class Solution {
public static Map<Integer, String> map = new HashMap<Integer, String>();
static {
map.put(0, "ноль");
map.put(1, "один");
map.put(2, "два");
map.put(3, "три");
map.put(4, "четыре");
map.put(5, "пять");
map.put(6, "шесть");
map.put(7, "семь");
map.put(8, "восемь");
map.put(9, "девять");
map.put(10, "десять");
map.put(11, "одиннадцать");
map.put(12, "двенадцать");
}
public static void main(String[] args) {
List<String> list = new ArrayList<>();
String file1 = null;
try (BufferedReader reader = new BufferedReader(new InputStreamReader(System.in))) {
file1 = reader.readLine();
} catch (IOException ignored) {
}
try (BufferedReader reader = new BufferedReader(new FileReader(file1))) {
while (reader.ready()) {
String[] arr = reader.readLine().split(" ");
Collections.addAll(list, arr);
for (int i = 0; i < list.size(); i++) {
String word = list.get(i);
if (i == (list.size()-1)) { // Если слово последнее в строке
if (parsable(word)) {
int number = Integer.parseInt(word);
String str = map.get(number);
System.out.print(str);
} else {
System.out.print(word);
}
} else { // Если слово НЕ последнее в строке
if (parsable(word)) {
int number = Integer.parseInt(word);
String str = map.get(number);
System.out.print(str + " ");
} else {
System.out.print(word + " ");
}
}
}
System.out.println();
list.clear();
}
} catch (IOException ignored) {
}
}
// в этом методе определяем будем ли мы отправлять строку в метод замены да/нет
static boolean parsable(String word) {
try {
int i = Integer.parseInt(word);
if (i >= 0 & i <= 12) {
return true;
} else {
return false;
}
} catch (NumberFormatException e) {
return false;
}
}
}