Вот такой код, который нормально бегает по тексту, содержит правильный regex, но я заступорился здесь:
if (matcher.find()) {
text=matcher.replaceAll(map.get(0));
System.out.println(text);
}
То есть, я не могу понять, какое значение указать для replaceAll, что-бы в тексте заменялось именно соответствующее regex-у значение.package com.javarush.task.task19.task1924;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/*
Замена чисел
*/
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) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String file = reader.readLine();
reader.close();
String line;
StringBuilder builder = new StringBuilder();
BufferedReader fileReader = new BufferedReader(new FileReader(file));
while ((line = fileReader.readLine()) != null) {
builder.append(line).append("\n");
}
fileReader.close();
String text = builder.toString().trim();
Iterator<Map.Entry<Integer, String>> itr = map.entrySet().iterator();
while(itr.hasNext())
{
String s = "\\b"+itr.next().getKey().toString()+"\\b";
Pattern pattern = Pattern.compile(s);
Matcher matcher = pattern.matcher(text);
if (matcher.find()) {
text=matcher.replaceAll(map.get(0));
System.out.println(text);
}
}
}
}