В статическом блоке инициализируйте словарь map парами [число-слово] от 0 до 12 включительно. Считайте с консоли имя и содержимое файла. Замените все числа на слова используя словарь map.
После этого выведите результат на экран и закройте потоки.
Замена чисел
- 20
Недоступна
Комментарии (386)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Katsuki Bakugou
13 января, 13:03
Решил со 2 попытки только из-за того, что написал "нуль", а не "ноль".
Если кому пригодится, то, чтобы разбить по словам, а не по пробелам "\\b".
+2
Андрей Федоров Android Developer
23 ноября 2022, 11:59
Нашел очень простое решение
Полистал коменты, я не первый) +1
Bingo Boom
10 ноября 2022, 12:33
Сделал задачу с использованием класса Pattern и Matcher, но валик не принял, обидно. Пришлось скопировать из готового решения. Зато эта задача мотивировала меня учить регулярки
0
Александр Сергеев
5 ноября 2022, 20:05
Очень сложно для меня оказалось(( Пора! Пора учить регулярки!
0
Lua gato
26 октября 2022, 09:44
Встретились не изученные части регулярок, нашел пояснение тут
Создал свой огород, как и многие тут 😜
+3
KW2001
22 октября 2022, 08:35
многовато сделал, а можно было ограничиться только \\b)
0
Олег Шукюров
20 октября 2022, 09:15
Тоже регулярки, но конечно не такой лаконичный код как код ниже... не додумался :D
Pattern pattern = Pattern.compile("\\b(1[0-2]?|[0-9])\\b");
Matcher matcher = pattern.matcher(result);
while (matcher.find()) {
result = result.replaceFirst(matcher.group(), map.get(Integer.parseInt(matcher.group())));
}
System.out.println(result);
0
SVCH
11 января, 06:52
только не хватает проверки, есть ли такое число в мапе )
0
Loony.java
13 октября 2022, 19:27
добавлял в мапу и не заметил, что дважды добавил слово "четыре"
долго ломал голову, что не так
0
TemaCode
20 сентября 2022, 13:33
воткнули в regex Integer получается? мм🤔 первый раз такое вижу 😼
+10
IrinaHonya
29 сентября 2022, 20:22
Объясните пожалуста, что это значит? Я не могу понять 😕
0
Vitali Sin
12 октября 2022, 21:11
Супер решение!
Первоначально код у меня получился почти на 50 строк. Но я решил почитать комментарии.
Сразу наткнулся на ваш. Не могу поверить, что это работает.
С регулярками разобрался, прорешал задачи. Но такое решение мне и в голову не пришло.
Круто! Нужно взять на заметку.
0
Grock
6 декабря 2022, 14:47
Гений! :) Думаю, здесь Integer преобразуется в строку и сливается с ней в том виде, который передали. Такого эффекта можно добиться еще через String.format и вставку полученного шаблона как regexa в параметры метода реплейс.
+1
hint1k
13 сентября 2022, 09:20
Решал через деление строк. Получился код ниже. Валидатор зачел. А потом увидел правильное решение и долго ржал.
BufferedReader br2 = new BufferedReader(new InputStreamReader(System.in));
String string2 = br2.readLine();
BufferedReader br = new BufferedReader(new FileReader(string2));
while (br.ready()) {
String[] strings = br.readLine().split("[\\s]");
for (int i = 0; i < strings.length; i++) {
for (Map.Entry<Integer,String> entry: map.entrySet()) {
if (strings[i].equals(String.valueOf(entry.getKey()))) {
strings[i] = entry.getValue();
}
String string3 = "";
String string4 = "";
if (strings[i].matches(".*\\p{Punct}") && strings[i].matches("\\d.*")) {
String[] strings2 = strings[i].split("");
for (int j = 0; j < strings2.length-1; j++) {
string3 +=strings2[j];
string4 = strings2[strings2.length-1];
}
}
if (string3.equals(String.valueOf(entry.getKey()))) {
string3 = entry.getValue();
strings[i] = string3+string4;
}
}
if (strings[i].contains(".")) {
System.out.println();
}
}
for (int i = 0; i < strings.length; i++) {
System.out.print(strings[i]+" ");
}
}
br.close();
br2.close();
}
0