Внизу редакция кода для тестов. В действительности не проходит только условие 6.
Подскажите почему не работает регулярка \\D? не удаляет точки и прочие пунктуационные знаки, поэтому не выводит числа по типу "11?" и "12." И числа по типу "08" будут у меня преобразованы в слово "восемь", в условии про такие числа ничего не сказано, что с ними надо делать или ничего не надо? Это место вообще возможно победить только с регулярками с подходом как у меня?
Логика программы вкратце: по регулярке ищу двухзначное число, если есть совпадения, удаляю всю мишуру реплейсомОлл \\D, потом делаю реплейсОлл по регулярке при помощи которой искал двухзначное число. Но на этапе \\D не работает. нужна помощь что бы заставить это работать!
Можно конечно сделать массив Character и проходиться по символам isDigit, но мне кажется это менее изящно...в общем хелп, старшие друзья товарищи
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.ArrayList;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
/*
Замена чисел
*/
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 bufferedReader = new BufferedReader(new InputStreamReader(System.in));
//Scanner scanner = new Scanner(new FileReader(bufferedReader.readLine()));
//while (scanner.hasNext()) {
String[] array = ("Это стоит 1 бакс, а вот 11? это - 12 7 8 12. \n" +
"Переменная имеет имя file1.\n" +
"110 - это число.").split(" ");
//String[] array = scanner.nextLine().split(" ");
for (String s : array) {
for (Map.Entry<Integer, String> mp : map.entrySet()) {
if (s.matches("\\b\\d\\d?\\b")) {
String st = s.replaceAll("\\D", "");
if (st.equals(mp.getKey() + "")) {
s = st.replaceAll("\\b\\d\\d?\\b", mp.getValue());
}
}
}
System.out.print(s + " ");
}
}
//bufferedReader.close();
//scanner.close();
//}
}